Foros del Web » Programando para Internet » PHP »

Email duplicado en bd Ayuda!

Estas en el tema de Email duplicado en bd Ayuda! en el foro de PHP en Foros del Web. Hola amigos, estoy con un gran problema, al registrarse se puede utilizar la misma direccion de correo electronico. Como hago para que diga en $err ...
  #1 (permalink)  
Antiguo 31/05/2010, 15:34
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Email duplicado en bd Ayuda!

Hola amigos, estoy con un gran problema, al registrarse se puede utilizar la misma direccion de correo electronico. Como hago para que diga en $err "Pon otra casilla de email" ?
Intenté con poner lo de la parte de $busqueda, pero no funciona.

Necesito ayuda. gracias.

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.  
  5. error_reporting(E_ALL ^ E_NOTICE);
  6.  
  7. define('INCLUDE_CHECK',true);
  8.  
  9. require("connect.php");
  10. require("functions.php");
  11.  
  12.  
  13. //Archivos incluidos solo si el INCLUDE_CHECK est� definido
  14.  
  15. session_name('pLogin');
  16. //Empezando la sesi�n
  17.  
  18. //La cookie vive por 2 semanas
  19.  
  20.  
  21. if($_SESSION['id'] && !isset($_COOKIE['dmRemember']) && !$_SESSION['rememberMe'])
  22. {
  23.     //Si est� logueado, pero no tiene la cookie dmRemember (el navegador se reinicia)
  24.     // y si no ha checkeado la rememberMe checkbox:
  25.    
  26.     $_SESSION=array();
  27.    
  28.     //Destruir la sesion
  29. }
  30.  
  31. if(isset($_GET['logoff']))
  32. {
  33.     $_SESSION=array();
  34.    
  35.     header("Location: index.php");
  36.     exit;
  37. }
  38.  
  39. if($_POST['submit']=='Ingresar')
  40. {
  41.     //checando si el login form ha sido submit
  42.     $err=array();
  43.     //Tira los errores nuestros
  44.    
  45.    
  46. if(!$_POST['username'] || !$_POST['password'])
  47.     $err[]='Todos los campos deben ser completados!';
  48.  
  49. if(!count($err))
  50. {
  51.     $_POST['username']=mysql_real_escape_string($_POST['username']);
  52.     $_POST['password']=mysql_real_escape_string($_POST['password']);
  53.     $_POST['rememberMe']=(int)$_POST['rememberMe'];
  54.    
  55.     //escaping all input data
  56.    
  57.     $row=mysql_fetch_assoc(mysql_query("SELECT id,usuario FROM members WHERE usuario='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
  58.    
  59.     if($row['usuario'])
  60.     {
  61.         //Si todo est� logueado correctamente
  62.        
  63.         //$_SESSION['username']=$row['user'];
  64.         $_SESSION['usuario']=$row['usuario'];
  65.         $_SESSION['id']=$row['id'];
  66.         $_SESSION['sexo']=$row['sexo'];
  67.         $_SESSION['rememberMe']=$_POST['rememberMe'];
  68.        
  69.         //Store some data in the session
  70.        
  71.         setcookie('dmRemember',$_POST['rememberMe']);
  72.         }
  73.         else    $err[]='Usuario y/o Password incorrectos!';
  74.     }
  75.    
  76.     if($err)
  77.     $_SESSION['msg']['login-err']=implode('<br />', $err);
  78.     //Guardamos los mensajes de error en la sesion
  79.    
  80.     header("Location: index.php");
  81.     exit;
  82. }
  83. else if($_POST['submit']=='Registrar')
  84. {
  85.     //Si el formulario de registro ha sido enviado
  86.    
  87.     $err=array();
  88.     if(strlen($_POST['firstname'])>100)
  89.     {
  90.         $err[]='Tu nombre(s) debe tener menos de 100 caracteres!';
  91.     }
  92.  
  93.     if(!preg_match('/[^0-9\-\_\.]+/i',$_POST['firstname']))
  94.     {
  95.         $err[]='Tu nombre(s) contiene caracteres inválidos!';
  96.     }
  97.  
  98.     if(strlen($_POST['lastname'])>100)
  99.     {
  100.         $err[]='Tu apellido debe tener menos de 100 caracteres!';
  101.     }
  102.  
  103.     if(!preg_match('/[^0-9\-\_\.]+/i',$_POST['lastname']))
  104.     {
  105.         $err[]='Tu apellido contiene caracteres inválidos!';
  106.     }
  107.    
  108.     if(strlen($_POST['username'])<4 || strlen($_POST['username'])>100)
  109.     {
  110.         $err[]='Tu nombre de usuario debe tener entre 4 y 100 caracteres!';
  111.     }
  112.    
  113.     if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['username']))
  114.     {
  115.         $err[]='Tu nombre de usuario contiene caracteres inválidos!';
  116.     }
  117.    
  118.     if(strlen($_POST['password'])<6 || strlen($_POST['password'])>32)
  119.     {
  120.         $err[]='Tu contraseña debe tener entre 6 y 32 caracteres!';
  121.     }
  122.    
  123.     if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['password']))
  124.     {
  125.         $err[]='Tu contrase�a es d�bil!';
  126.     }
  127.    
  128.     if($_POST['repassword']!=$_POST['password'])
  129.     {
  130.         $err[]='Tu repetición de password es distinta de la primera!';
  131.     }
  132.    
  133.     if(!checkEmail($_POST['email']))
  134.     {
  135.         $err[]='Tu email no es válido!';
  136.     }
  137.    
  138.     if(!count($err))
  139.     {
  140.         //Si no hay errores
  141.        
  142.         $_POST['email']=mysql_real_escape_string($_POST['email']);
  143.         $_POST['password']=mysql_real_escape_string($_POST['password']);
  144.         $_POST['username']=mysql_real_escape_string($_POST['username']);
  145.         $_POST['firstname']=mysql_real_escape_string($_POST['firstname']);
  146.         $_POST['lastname']=mysql_real_escape_string($_POST['lastname']);
  147.         $_POST['sexo']=mysql_real_escape_string($_POST['sexo']);
  148.         //Escape the input data
  149.        
  150.     $busqueda= mysql_query("SELECT email FROM members WHERE email='$email'");
  151.  
  152.  
  153.  
  154. if(mysql_num_rows($busqueda)>0) {
  155.  
  156. echo   $err[]= 'La direccion de correo electronico no se encuentra disponible. Por favor intente con otro';    
  157.     }
  158.     else {     
  159.        
  160.             mysql_query("   INSERT INTO members(firstname,lastname,usuario,pass,email,sexo,dt)
  161.                         VALUES('".$_POST['firstname']."','".$_POST['lastname']."','".$_POST['username']."','".md5($_POST['password'])."','".$_POST['email']."','".$_POST['sexo']."',NOW())");
  162.                        
  163.            
  164.             if(mysql_affected_rows($link)==1)
  165.             {
  166.                 send_mail(  '[email protected]',
  167.                         $_POST['email'],
  168.                         'Registro',
  169.                         'Tu nombre de usuario es: '.$username.'\n Tu contrase�a es: '.$password);
  170.                        
  171.                
  172.                 $_SESSION['msg']['reg-success']='Te hemos enviado un email con tu información de registro!';
  173.                 }
  174.                 else
  175.                  $err[]='El nombre de usuario ya está en uso!';
  176.                  
  177.             }
  178.            
  179.             if(count($err))
  180.             {
  181.                 $_SESSION['msg']['reg-err']=implode('<br />',$err);
  182.             }
  183.                
  184.     header("Location: index.php");
  185.     exit;
  186.        
  187.            
  188.     }
  189.  
  190. }
  191.  
  192. ?>
  #2 (permalink)  
Antiguo 31/05/2010, 15:40
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 9 meses
Puntos: 66
Respuesta: Email duplicado en bd Ayuda!

Que hace esta función if(!count($err) ???
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 31/05/2010, 15:56
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Email duplicado en bd Ayuda!

He intentado poner algo asi, pero no me funciona.

Código PHP:
Ver original
  1. if ( !isset( $_REQUEST["email"] ) || (strlen(trim($_REQUEST["email"] )) == 0) )
  2.         {
  3.             $err[]="La direccion de correo electronico debe ser completada";
  4.            
  5.         }
  6.         elseif(!checkEmail($_POST['email']))
  7.         {
  8.             $err[]="Email no valido ";
  9.            
  10.         }
  11.         else
  12.         {
  13.             $query=mysql_query ("select * from members where email='$email'");
  14.             if ($mem=mysql_fetch_array($query))
  15.             {
  16.                 $err[]="Correo electronico ya registrado";
  17.                
  18.            
  19.             }
  20.         }

Donde estan los preg match
  #4 (permalink)  
Antiguo 31/05/2010, 16:24
 
Fecha de Ingreso: mayo-2010
Mensajes: 30
Antigüedad: 14 años
Puntos: 2
Respuesta: Email duplicado en bd Ayuda!

Hola, en tu código ¿donde se asigna a la variable $email el valor de S_POST['email'] (es que es tan largo que no lo he leído más que por encima jejejje)


Código PHP:
if(!count($err))    {
        
//Si no hay errores                
$_POST['email']=mysql_real_escape_string($_POST['email']);        
$_POST['password']=mysql_real_escape_string($_POST['password']);        
$_POST['username']=mysql_real_escape_string($_POST['username']);        
$_POST['firstname']=mysql_real_escape_string($_POST['firstname']);        
$_POST['lastname']=mysql_real_escape_string($_POST['lastname']);        
$_POST['sexo']=mysql_real_escape_string($_POST['sexo']);        //Escape the input data            $
busquedamysql_query("SELECT email FROM members WHERE email='$email'");    
if(
mysql_num_rows($busqueda)>0) {  
echo   
$err[]= 'La direccion de correo electronico no se encuentra disponible. Por favor intente con otro';         

Prueba a ver que tal
Código PHP:
$busquedamysql_query("SELECT email FROM members WHERE email=".$_POST['email']."'"); 
De todas formas esto debería ir antes de asignar la session al usuario no?

Etiquetas: bd, duplicado, email
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 14:45.