Foros del Web » Programando para Internet » PHP »

Cómo enviar email de confirmacion de registro.

Estas en el tema de Cómo enviar email de confirmacion de registro. en el foro de PHP en Foros del Web. Buenas tardes,mi duda es la siguiente, me funciona correctamente el formulario, la entrada de datos en mysql y el envio de un email con phpmailer ...
  #1 (permalink)  
Antiguo 15/06/2006, 13:05
 
Fecha de Ingreso: junio-2006
Mensajes: 2
Antigüedad: 17 años, 10 meses
Puntos: 0
Cómo enviar email de confirmacion de registro.

Buenas tardes,mi duda es la siguiente, me funciona correctamente el formulario, la entrada de datos en mysql y el envio de un email con phpmailer al usuario registrado, lo que no se hacer es que ese email sea un email para confirmar el registro donde tenga un enlace para su confirmacion.
Agradeceria vuestra ayuda, gracias
Javier
  #2 (permalink)  
Antiguo 15/06/2006, 14:05
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
Pues puedes meter algo asi:
"Gracias por su registro, para activar su cuenta pulse el siguiente enlace:
http://www.tudominio.com/paginaconfirmacion.php?id=X"

siendo X el id del susodicho usuario..

luego en paginaconfirmacion.php confirmas en la base de datos que está pendiente de confirmacion y lo actualizas a confirmado.

Nota: claro.. en la tabla usuario tienes que tener un campo que sea "estado" o algo asi.. que cuando se registra lo pones a "PENDIENTE" o algo parecido..

y cuando esté la opcion realizada le muestras en esa pagina de confirmacion:
"Gracias.. se ha realizado el tramite correctamente, ahroa puede entrar a su cuenta.." o como prefieras ponerlo..

a ver si te vale..
__________________
ALOZORRO v5.0 (ahora en .es)
  #3 (permalink)  
Antiguo 16/06/2006, 03:36
 
Fecha de Ingreso: septiembre-2005
Mensajes: 94
Antigüedad: 18 años, 6 meses
Puntos: 0
Hola amigos,
Cita:
Pues puedes meter algo asi:
"Gracias por su registro, para activar su cuenta pulse el siguiente enlace:
http://www.tudominio.com/paginaconfirmacion.php?id=X"

siendo X el id del susodicho usuario..
Me parece que, el problema de eso es que otro usuario podría confirmar tu cuenta simplemente conociendo tu id. Claro, ahora depende de qué es la id;si es el nombre d usuario sería demasiado sencillo suplantar a alguien; lo que te voy a poner genera una id única para cada usuario, que será función de su dirección ip y otros parámetros difíciles de suplantar.

Tienes dos opciones:

En ambas opciones, necesitarás un campo extra en la tabla usuario, que diga si se ha validado el mail o no.

1.- Además, deberás crear otro campo para guardar la idunica.

2.- Yo lo implementé en una tabla aparte, llamada usuarios_temp, en la que guardo el login del usuario, su clave única, y la fecha de cuando se registró (esto es por si quieres eliminar usuarios que no hayan validado a las X horas).

A continuación, cuando el usuario introduzca sus datos en el form. de registro , los guardas en tu base de datos, rellenando el campo de idunica con esta función:

funcion para generar una idunica
Código PHP:
//función para el mail
function getRealIP()
{
   if( 
$_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
   {
      
$client_ip =
         ( !empty(
$_SERVER['REMOTE_ADDR']) ) ?
            
$_SERVER['REMOTE_ADDR']
            :
            ( ( !empty(
$_ENV['REMOTE_ADDR']) ) ?
               
$_ENV['REMOTE_ADDR']
               :
               
"unknown" );
   
      
// los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR
   
      
$entries split('[, ]'$_SERVER['HTTP_X_FORWARDED_FOR']);
   
      
reset($entries);
      while (list(, 
$entry) = each($entries))
      {
         
$entry trim($entry);
         if ( 
preg_match("/^([0-9]+.[0-9]+.[0-9]+.[0-9]+)/"$entry$ip_list) )
         {
            
// http://www.faqs.org/rfcs/rfc1918.html
            
$private_ip = array(
                  
'/^0./',
                  
'/^127.0.0.1/',
                  
'/^192.168..*/',
                  
'/^172.((1[6-9])|(2[0-9])|(3[0-1]))..*/',
                  
'/^10..*/');
   
            
$found_ip preg_replace($private_ip$client_ip$ip_list[1]);
   
            if (
$client_ip != $found_ip)
            {
               
$client_ip $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      
$client_ip =
         ( !empty(
$_SERVER['REMOTE_ADDR']) ) ?
            
$_SERVER['REMOTE_ADDR']
            :
            ( ( !empty(
$_ENV['REMOTE_ADDR']) ) ?
               
$_ENV['REMOTE_ADDR']
               :
               
"unknown" );
   }
   
   return 
$client_ip;
   
}
//getRealIP() 
En el mail que le mandes a tu usuario, debería haber un link parecido a esto:

http://www.paginaconfirmacion.php?idunica=xxxxxxxxx

En paginaconfirmacion.php recoges idunica con Get y compruebas que existe en tu base de datos esa idunica. Ya sólo tienes que validar el usuario al que pertenece (poniendo el campo de validación a 1 o como lo hagas).

Espero que te sirva tanto como me sirvió a mí.

Un saludo!!
  #4 (permalink)  
Antiguo 16/06/2006, 05:58
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
hombre. nose.. yo creo que no hay que complicarse tanto, puedes enviar cualquier dato (id, nombre de usuario, etc) codificado:

$token= base64_encode($dato_enviar);

http://www.tudominio.com/paginaconfirmacion.php?devuelto=$token"

y cuando te lo devuelve decodificarlo y tratarlo:
$dato_que_se_envio= base64_decode($devuelto);

pero en fin. lo mio supongo que es mas cutre.. jajaja.
__________________
ALOZORRO v5.0 (ahora en .es)
  #5 (permalink)  
Antiguo 19/06/2006, 15:40
 
Fecha de Ingreso: junio-2006
Mensajes: 2
Antigüedad: 17 años, 10 meses
Puntos: 0
Cómo hago para decir que el campo $idunica es igual a la funcion getRealIP ?
  #6 (permalink)  
Antiguo 08/12/2007, 10:10
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Re: Cómo enviar email de confirmacion de registro.

gua que complicado es esto
  #7 (permalink)  
Antiguo 08/12/2007, 11:02
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Cómo enviar email de confirmacion de registro.

Cita:
Iniciado por a83 Ver Mensaje
gua que complicado es esto
No lo es. La lógica es simple. Al guardar los datos del usuario en la base de datos, guardas una clave generada aleatoriamente. Generarla es tan simple como:

Código PHP:
$clave md5(time().rand()); 
Luego, envias el mail por medio de PHPMailer o la función mail, indicándole esa clave al usuario.

Creas una página que recoja la clave, del tipo pag.php?id=dshf7843ytrhg87reyhfdgyfd7, y actualizas la base de datos, cambiando el estado de tu usuario a activo. Es todo

Algunos temas más abajo se está tratando el mismo asunto

Un saludo,
  #8 (permalink)  
Antiguo 08/12/2007, 14:30
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Pregunta Re: Cómo enviar email de confirmacion de registro.

voy a dedicarle un poco de tiempo a esto suena interesante soy un poco nuevo en esto jejej gracias
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 1 personas




La zona horaria es GMT -6. Ahora son las 16:45.