Foros del Web » Programando para Internet » PHP »

Sistema de registro usando la BD del foro phpbb2

Estas en el tema de Sistema de registro usando la BD del foro phpbb2 en el foro de PHP en Foros del Web. Buenas, soy nuevo en la web, ya que la he conocido hoy gracias a un amigo, y no sabía muy bien si postear esto aquí, ...
  #1 (permalink)  
Antiguo 07/12/2003, 13:43
Avatar de yuip  
Fecha de Ingreso: diciembre-2003
Ubicación: Asturias
Mensajes: 13
Antigüedad: 14 años
Puntos: 0
Sistema de registro usando la BD del foro phpbb2

Buenas, soy nuevo en la web, ya que la he conocido hoy gracias a un amigo, y no sabía muy bien si postear esto aquí, o en el subforo de 'cosillas prefabricadas' xDDD pero como solo uso una tabla de su BD, pues bueno, lo hago aquí, si no, para otra vez ya sabré exactamente donde postear este tipo de cosas.

El caso es que estoy intentando hacer un formulario para registrar usuarios en la BD del foro PHPBB2, en la tabla de usuarios (lógico xD). El caso es que lo tengo listo, y me registra usuarios, pero ahora lo que necesito es que, antes de ingresar la información en la tabla, compruebe que los datos de nick/login y email, los compare con los de la bd, para ver si están repetidos, y si lo están, te regresa al formulario sin introducir el nuevo usuario, y en caso de que sean únicos, pues los ingrese.

Código PHP:
if(($login) && ($pass0) && ($pass1) && ($mail) && ($confirmar)) {
    
$query1=mysql_query("SELECT * FROM foro_phpbb_users where username='$login'");
    
$query2=mysql_query("SELECT * FROM foro_phpbb_users where user_email='$mail'");
    
$com1=mysql_fetch_array($query1);
    
$com2=mysql_fetch_array($query2);
    if((
$login==$com1[username]) || ($mail==$com2[user_email])) {
        
header("location: ../?centro=pruebas/registro.php");
    } else if(
$pass0==$pass1) {
        
$pass md5($pass0); 
El código continuaría...
Los datos enviados son $login (nick del usuario), $pass0 y $pass1 (passwords para comprobar, deberían ser iguales), y $mail. Pues este trozo de código es el que debería comprobar si ya hay algun usuario con el mismo nick o email, pero no funciona, osea, que aunque sea el mismo nick o mail, los introduce igualmente. He estado pensado y no se me ocurre nada, me echáis un cable?

Saludos y gracias anticipadas.
  #2 (permalink)  
Antiguo 10/12/2003, 06:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé porqué haces dos "query" .. En SQL existen los operadores lógicos como AND .. OR .. etc .. para hacer consultas tipo:

$query=mysql_query("SELECT * FROM foro_phpbb_users where username='$login' AND user_email='$mail'");

Y si añades COUNT() para contar desde SQL el total de registros que te pueda arrojar esa consulta .. en una sóla sentencia SQL tendrías si existe ese registro (usuario) con ese username y ese user_email en tu tabla del foro_phpbb_users ...

Código PHP:
$sql=mysql_query("SELECT COUNT(*) FROM foro_phpbb_users where username='$login' AND user_email='$mail'");
$consulta=mysql_query($sql) or die (mysql_error());
$total=mysql_result($consulta,0);

if (
$total == 0){
    
// Si no coincide usuario y passwor (registros ==0) .. redireccionas ..
    
header("location: ../?centro=pruebas/registro.php");
    exit; 
// Importante terminar el script si redireccionas ..
} else {
   
// Lo que corresponda ...

El resto .. en el "else" parece que revisarías al usuario/passwor en formato MD5() esta última .. SI es así . haz otra consulta (query) tipo:

$sql=mysql_query("SELECT * FROM foro_phpbb_users where username='$login' AND pass=MD5('$pass')");

Como veras .. uso la función MD5() directamente sobre SQL (que Mysql también tiene esa función ...

Y .. recuerda .. si el objetivo de esto es simplemente validar al usuario . con que cuentes los registros que arrojaría la consulta sobra y es más optimo para "validar" .. Si requieres de esos datos a su vez ahí ya necesitas hacer tu mysql_fetch_array() o lo que corresponda para obtener esos valores del "recordset" que has obtenido (y sin usar count() ..).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:42.