Foros del Web » Programando para Internet » PHP »

activar cuenta de registro via e-mail

Estas en el tema de activar cuenta de registro via e-mail en el foro de PHP en Foros del Web. hola, tengo un formulario de registro para una pagina la cual llenan los campos de nombre de usuario,correo, contraseña, fecha de nacimiento etc. al dar ...
  #1 (permalink)  
Antiguo 03/07/2007, 14:05
Avatar de malcolmim  
Fecha de Ingreso: abril-2007
Mensajes: 50
Antigüedad: 17 años
Puntos: 0
activar cuenta de registro via e-mail

hola, tengo un formulario de registro para una pagina la cual llenan los campos de nombre de usuario,correo, contraseña, fecha de nacimiento etc. al dar de alta el registro quiciera que se enviara un correo a la cuenta que el usuario puso, ese correo debe de contener un link el cual active la cuenta si no, no la da de alta hasta que se active. alguien sabe como puedo hacer todo ese proceso desde enviar el correo hasta validar el link para activar la cuenta o alguien me sugiere algo parecido?

de antemano gracias!
  #2 (permalink)  
Antiguo 03/07/2007, 14:24
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 16 años, 11 meses
Puntos: 2
Re: activar cuenta de registro via e-mail

Buenas:
Primero que nada, en la base de datos, deberías dar un nuevo campo donde guardes los datos del usuario, algo asi llamado "activo" que te de valores 1 o 0 (es a modo de ejemplo, no es que sea asi necesariamente). Así, si un usuario se ha inscrito, automaticamente le dirías que no ha activado su cuenta [valor 0] (hasta que este valor no cambie). Luego, le envias el correo con la funcion mail() del php a la direccion que se registro a una pagina, donde, una vez tomado los datos del usuario, te cambie ese valor de 0 a 1.

Atento a tus comentarios

Zick Corporation
  #3 (permalink)  
Antiguo 16/07/2007, 17:04
Avatar de malcolmim  
Fecha de Ingreso: abril-2007
Mensajes: 50
Antigüedad: 17 años
Puntos: 0
Re: activar cuenta de registro via e-mail

bueno si entiendo lo que debo de hacer pero realmente no se como, se como enviar un mail pero no se como generar el link o que es lo ke contenga la pagina de ese link, y como es que ese link al darle clic consulta la base de datos y ponga 1 enves de 0, me podrias hechar la mano un poco en darme una idea como seria el codigo??
  #4 (permalink)  
Antiguo 17/07/2007, 15:34
Avatar de Shevkorn  
Fecha de Ingreso: enero-2005
Ubicación: Trujillo
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 1
Re: activar cuenta de registro via e-mail

Hola, leyendo tu problema doy una posible solucion:
- Primero tienes que tener en la base de datos un campo extra como dijo zick, lo puedes hacer directamente con el phpmyadmin.
- Segundo: Al momento de registrar al usuario haces una query adicional y obtienes el ID del registro que acabas de hacer y luego lo concatenas a una url para procesarla en otra pagina php. Por ejemplo
Código PHP:
$sql='SELECT ID FROM TABLA ORDER BY ID DESC';
$rs=mysql_query($sql,$idbd);
list(
$ultimoId)=mysql_fetch_row($rs);
$url='pagina.php?id=$ultimoId&activar=1';
//luego envias esa cadena en tu email
//supongo q sabes como no? (segun tu comentario inicial) 
//luego en la siguiente pagina php obtienes los dos parametros a traves de $_GET y haces una query adicional para actualizar el campo que creaste 
//inicialmente de 0 a 1 (el campo en la bd tiene q ser booleano o pon un char(1))
//ya q tienes el ID del record y luego haces el update de manera directa 
Espero que te haya ayudado en algo
__________________
Taek said: ¿Aùn los pecadores podremos llegar al cielo?
  #5 (permalink)  
Antiguo 17/07/2007, 16:55
 
Fecha de Ingreso: julio-2005
Mensajes: 220
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: activar cuenta de registro via e-mail

Tal como te han comentado arriba, deberías crear 1 campo que indique si el usuario esta activo o no. Pero ademas te aconsejo que a la hora de construir
el link de activación, no pases solamente "activate=1" sino que
crearas un campo más en la tabla que guarda un numero aleatorio.

Te pongo un ejemplo:

Código PHP:
    $pass=md5($pass);
    
$activate=create_key(32); //  Función que genera un numero aleatorio de 32 digitos
    
$sql="INSERT INTO users VALUES ('','".$user."','".$pass."','".$email."','".$activate."','1')"// el 1=estado=no activado
    
$r $bd->bbdd_query($sql);
    
$idTemp=mysql_insert_id(); // recogemos la id del registro que acabamos de añadir.
//Construimos el enlace
$path="http://www.miweb.com/";
    
$activateLink=$path."activar_registro.php?id=".$idTemp."&activateKey=".$activate.""
El $activateLink lo envias por email.

Y luego como te han comentado mas arriba, recoges mediante $_GET los valores, compruebas si coincide el id del usuario y el link de activación, si coincide, dejas en blanco el campo del link y pones a 0 (activado) el campo estado.

Salu2!!
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

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 12:52.