Foros del Web » Programando para Internet » PHP »

Activar usuario mediante email

Estas en el tema de Activar usuario mediante email en el foro de PHP en Foros del Web. Hola amigos!, tengo mi codigo de registro y login de usuario todo junto aqui, el tema es que agregué 2 campos en la base de ...
  #1 (permalink)  
Antiguo 21/05/2010, 09:34
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Activar usuario mediante email

Hola amigos!, tengo mi codigo de registro y login de usuario todo junto aqui, el tema es que agregué 2 campos en la base de datos "codigo" y "estado" estado puesto en 0.
Estos dos campos al hacer un registro todo bien, se insertan el codigo aleatorio y el 0.
Ahora lo que yo trato de implementar es mandarle un email al usuario con ese codigo aleatorio para que al clickear en ese link la base de datos se actualice el estado y se ponga en 1. y asi poder entrar.
porque el tema es que los usuarios al no tener esto registran cualquier email.
Como lo coloco en mi codigo?

Gracias, por leer.

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

ya tienes el código en la variable $codigo, mandales un email estilo

para verificar tu correo electronico clica el link: http://www.dominio.com/confirmar.php?codigo=87aysdfh787

en confirmar.php buscas ese codigo y le cambias el estado.
  #3 (permalink)  
Antiguo 21/05/2010, 09:55
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Activar usuario mediante email

Código PHP:
Ver original
  1. $codigo = genera_random(20);
  2.  
  3. send_mail(  '[email protected]',
  4.                         $_POST['email'],
  5.                         'Registro ',
  6.                         ' Tu nombre de usuario es: '.$_POST["username"].'n Tu contraseña es: '.$_POST["password"]);

En el mensaje que enviarás, simplemente debes meter la variable $codigo. No tiene mucha ciencia . Ya lo estás haciendo con el 'username' y el 'password'.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #4 (permalink)  
Antiguo 21/05/2010, 10:07
 
Fecha de Ingreso: enero-2010
Mensajes: 198
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Activar usuario mediante email

Si, pero como hago para cuando ingresa?, porque no tengo un confirm.php el login está metido ahi tambien.
O debo crear uno?

Etiquetas: email, usuarios
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 02:23.