Ver Mensaje Individual
  #9 (permalink)  
Antiguo 04/08/2005, 19:18
okram
Invitado
 
Mensajes: n/a
Puntos:
codigoooo

Salu2...

hace un tiempo hice un sistema asi.... te comparto aqui el codigo COMENTADO haber si te sirve

En la pagina en la que procesas el formulario de registro, donde añades los datos a la base de datos:
Código PHP:
<?
//Aqui una funcion para generar un codigo aleatorio
//La puedes incluir en tu archivo de funciones si es que tienes uno
function genera_random($longitud)

$exp_reg="[^A-Z0-9]"

return 
substr(eregi_replace($exp_reg""md5(time())) . 
eregi_replace($exp_reg""md5(time())) . 
eregi_replace($exp_reg""md5(time())), 
0$longitud); 
}

//Realizas toda la validacion de formulario que tengas,
//y pones esto antes de insertar los datos en la bd
$mkey=genera_random(30); //El 30 es el numero de caracteres que tendra tu codigo (puedes cambiarlo)
$verificado="no"//El default es no

//AQUI realizas la consulta para añadir los datos de tu formulario a la bd.
//DEBES AÑADIR TAMBIEN LAS VARIABLES $mkey Y $verificado
//RECUERDA QUE DEBES TENER EN LA TABLA QUE USES 2 CAMPOS MAS
//UNO SERA "MKEY", DONDE ESTARA EL CODIGO DE VERIFICACION
//EL OTRO SERA "VERIFICADO", DONDE HABRA UN NO SI NO ESTA VERIFICADO, Y UN SI, SI LO ESTA. AMBOS CAMPOS DEL TIPO VARCHAR

//ahora el codigo que enviara el mail de vcerificaion
//Para el envio del mail, yo use la clase phpMailer  :-D ...
//asi que te posteare codigo con esa clase ( io no uso la funcion mail() )

require "../../includes/class.phpmailer.php"//Busca este archivo en el google. Es el archivo d la clase phpmailer, que viene con otro llamado class.smtp.php
$mail = new phpmailer();
$mail->PluginDir "../../includes/"//Aqui el doirectorio dnd se encuentra el archivo class.smtp.php
$mail->Mailer "smtp";
$mail->Host "smtp.mail.yahoo.ca"//Tu host smtp (yo uso yahoo.ca)... supongo que puedes poner localhost.....
$mail->SMTPAuth true//Supongo que puede ir false si usas localhost
$mail->Username "usuario"//Usuario del servidor smtp. Supongo que puede ir vacio si usas localhost
$mail->Password "contraseña"//Contraseña en el servidor smtp. Supongo que puede ir vacio si usas localhost
$mail->From "[email protected]"//Direccion from de envio
$mail->FromName "Tu Web"//Nombre de Remitente
$mail->Timeout=40//El tiempo en segundos que tratara de enviar el mensaje antes de marcar error. SI tu mensaje es grande, dejalo donde esta, pero si es simple puedes bajarlo
$mail->AddAddress("$_POST[nombre_de_campo_de_email_en_el_formulario]"); //Aqui va el email al que envias el mensaje. Como viene de un formulario, pones $_POST[nombre del campo del email]
$mail->Subject "Confirme su email de registro"//asunto de tu mensaje

//AQUI VA EL BODY DEL MENSAJE EN HTML... 
//TE PONDRE LA PARTE DEL LINK NOMAS; TU LE DAS FORMATO...
//FIJATE QUE EL LINK VA HACIA LA PAGINA VERIFICAR.PHP
$mail->Body "Para verificar su dirección de correo electrónico haga clic en el siguiente link: <br><br><center><a href=\"verificar.php?MailKey=".$mkey."\">Click Aquí para Verificar</a></center>"

//AQUI VA UN BODY ALTERNATIVO; EN FORMATO SOLO TEXTO; SIN HTML
$mail->AltBody "Verifica tu email en http://tuweb.com/verificar.php?MailKey=".$mkey." Gracias";
$exito $mail->Send(); //Envias el mail, y si todo sale correcto exito tendra un valor X
while ((!$exito) && ($intentos 5)) //Ese 5 es el numero de intentos de enviar el mensaje, en caso de que falle al primer intento
{
sleep(5); //Mismo 5 que el de arriba (intentos)
//echo $mail->ErrorInfo;
$exito $mail->Send();
$intentos=$intentos+1;    
}
if(!
$exito//Si exito esta vacio, es que hubo problemas al enviar el mensaje
{
echo 
"Problemas enviando correo electrónico a ".$_POST[email];
echo 
"<br/>".$mail->ErrorInfo;    
}
else 
//SI el envio fue correcto....
{
echo 
"Revise su email";
}
?>

Bien hasta ahi ya añadiste el registro a tu tabla de usuarios y enviaste el mail, falta la pagina de confirmacion:

verificar.php
Código PHP:
<?
$key 
$_GET['MailKey']; //Guardas la variable que llego en la Url, que viene a ser el codigo de verificacion
if(!$key//Si no existe tal variable en la URL
{
header("Location: http://www.tuweb.com"); //Mandas al usuario a una pagina X
}

//INICIAMOS LA CONSULTA A LA TABLA, que se llamara usuarios
$query=mysql_query("SELECT * FROM usuarios WHERE mkey='".$key."'"); 

if(
$check=mysql_fetch_array($query)) //con este if verificamos que el codigo existe en la BD
{
if(
$check['verificado']==yes//Si el mail ya esta verificado
{
echo 
"tu mail ya esta verificado";
}
elseif(
$check['verificado']==no//Si no esta verificado
{
//Actualizamos la BD, y cambiamos el valor de dafault no en verificado por si
$sql "UPDATE usuarios SET verificado='si' WHERE mkey='$key' LIMIT 1";
mysql_query($sql); 
echo 
"tu mail ha sido verificado";
}
}
else 
//Si el codigo de verificacion no existe
{
echo 
"Tu codigo es incorrecto";
}
?>
Bueno eso es todo... espero que te sirva y si tienes algun problema postea aqui para ayudarte... Yo diseñe el codigo completo, asi que si usas este codigo me das los creditos ok??

No te olvides de realizar la coneccion a tu base de datos en cada pagina

Salu2