Ver Mensaje Individual
  #15 (permalink)  
Antiguo 10/05/2010, 11:29
ahdezm2
 
Fecha de Ingreso: mayo-2010
Mensajes: 6
Antigüedad: 14 años
Puntos: 0
Respuesta: Email de Confirmacion

Te cuento como lo hago yo, este sería mi formulario de registro:

Código PHP:
<p align="center"><strong>Registro de Promotores </strong></p>
<
table width="661" height="393" border="0" align="center" cellpadding="0" cellspacing="0">
        <
tr>
          <
td width="662" colspan="3" align="center" valign="top" >
          <
form action="registra.php" method="post">
          <
table width="59%" border="0" cellspacing="0" cellpadding="0">
            <
tr>
              <
td height="18" colspan="4" align="center"><a href="javascript:history.go(-1)" class="Estilo19">Volver</a></td>
            </
tr>
            <
tr>
              <
td height="54" colspan="4"><div align="center"><span class="Estilo18">Esta intentando entrar en una zona restringida a usuariospor favorregistresele llevara 30 sgdespues podr&aacutetener acceso a todas las secciones.</span></div></td>
            </
tr>
            <
tr>
              <
td height="21" colspan="4"><div align="center" class="Estilo17"><strong>Registro</strong></div></td>
            </
tr>
            <
tr>
              <
td width="14%" align="right" class="Estilo18">&nbsp;</td>
              <
td width="33%" height="31" class="Estilo24">Usuario <span class="Estilo27">(max 10):</span></td>
              <
td width="43%"><input type="text" name="username" size="20" maxlength="20" class="estilotextarea44" style="font-family:verdana;  font-size:10pt" /></td>
              <
td width="10%">&nbsp;</td>
            </
tr>
            <
tr>
              <
td align="right" class="Estilo18">&nbsp;</td>
              <
td height="29" class="Estilo24">Password <span class="Estilo27">(max 10):</span></td>
              <
td><input type="password" name="password" size="10" maxlength="10" class="estilotextarea43" style="font-family:verdana;  font-size:10pt" id="password" /></td>
              <
td>&nbsp;</td>
            </
tr>
            <
tr>
              <
td align="right" class="Estilo18">&nbsp;</td>
              <
td height="29" class="Estilo24">Confirmar passw:</td>
              <
td><input type="password" name="password2" size="10" maxlength="10" class="estilotextarea42" style="font-family:verdana;  font-size:10pt" /></td>
              <
td>&nbsp;</td>
            </
tr>
            <
tr>
              <
td align="right" class="Estilo18">&nbsp;</td>
              <
td height="29" class="Estilo24">Email <span class="Estilo25"><span class="Estilo28">(max 40)</span>:</span> </td>
              <
td><input type="text" name="email" size="20" maxlength="40" class="estilotextarea41" style="font-family:verdana;  font-size:10pt" /></td>
              <
td>&nbsp;</td>
            </
tr>
            <
tr>
              <
td height="35" colspan="4" align="center"><input type="submit" value="Registrar" class="boton" /></td>
            </
tr>
            <
tr>
              <
td height="40" colspan="4" align="center"><span class="Estilo18">Le ser&aacuteenviado un correo electr&oacute;nico para confirmar sus datos por favor ingrese correctamente su e-mailgracias.</span></td>
            </
tr>
          </
table>
          </
form
Esto genera un correo con el que grabo la cadena a validar en registra.php:

Código PHP:
//añadimos la funcion que se encargara de generar un numero aleatorio
function genera_random($longitud){ 
    
$exp_reg="[^A-Z0-9]"
    return 
substr(eregi_replace($exp_reg""md5(rand())) . 
       
eregi_replace($exp_reg""md5(rand())) . 
       
eregi_replace($exp_reg""md5(rand())), 
       
0$longitud); 
}



// verificamos si se han enviado ya las variables necesarias.
if (isset($_POST["username"])) {
    
$username $_POST["username"];
    
$password $_POST["password"];
    
$password2 $_POST["password2"];
    
$email $_POST["email"];
    
// Hay campos en blanco
    
if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) {
        echo 
"un campo está vacio.";
    }else{
        
// ¿Coinciden las contraseñas?
        
if($password!=$password2) {
            echo 
"Las contraseñas no coinciden";
            
        }else{
            
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkuser mysql_query("SELECT usuario FROM promuser WHERE usuario='$username'");
            
$username_exist mysql_num_rows($checkuser);
            
$checkemail mysql_query("SELECT email FROM promuser WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            if (
$email_exist>0) {
                echo 
"La cuenta de correo estan ya en uso";
                
        }else{
                if (
$username_exist>0) {
                echo 
"El nombre de usuario  esta ya en uso";
                
                
                
            }else{
            
                  
//agregamos la variable $activate que es un numero aleatorio de 
                  //20 digitos crado con la funcion genera_random de mas arriba
                  
                  
$activate genera_random(20);  
                  
                  
//aqui es donde insertamos los nuevos valosres en la BD  activate y el valor 1 que es desactivado
                  
                
$query 'INSERT INTO promuser (usuario, password, email, fecha, activate, estado)
                VALUES (\''
.$username.'\',\''.$password.'\',\''.$email.'\',\''.date("Y-m-d").'\',\''.$activate.'\', 1)';
                
mysql_query($query) or die(mysql_error());
                
                
                
                echo 
"<table width=70%><tr bgcolor= #61e877 class= estilo30><div align=center>";
                echo 
'Has sido registrado en tusitio como: <b>'.$username.' </b>de manera satisfactoria.<br />';
                echo 
' Gracias. Te enviaremos ahora un email<br />';
                echo 
'para activar tu cuenta, al correo que nos indicaste.<br />';
                echo 
"</div></tr>";
                echo 
"</table>";
                
                
                
                
$query   "SELECT * FROM promuser WHERE usuario='$username'";
         
$result mysql_query($query $conexion) or die ( mysql_error() );
         
$row   mysql_fetch_array($result);
         
         
$path="http://misitio.com/"//creamos nuestra direccion, con las carpetas que sean si hay
         //armamos nuestro link para enviar por mail en la variable $activateLink
$activateLink=$path."activar_cuenta.php?id=".$row['id_usuarios']."&activateKey=".$activate."";
                
                          
// Datos del email

$nombre_origen    "*Fulanito";
$email_origen     "[email protected]";
$email_destino    "".$row['email']."";  



$asunto           "".$row['usuario']." Datos de registro en TUSITIO, guarda este email.";

$mensaje          '<table width="629" border="0" cellspacing="1" cellpadding="2">
  <tr>
    <td width="623" align="left"></td>
  </tr>
  <tr>
    <td bgcolor="#2EA354"><div style="color:#FFFFFF; font-size:14; font-family: Arial, Helvetica, sans-serif; text-transform: capitalize; font-weight: bold;"><strong>     Estos son tus datos de registro, '
.$row['usuario'].'</strong></div></td>
  </tr>
  <tr>
    <td height="95" align="left" valign="top"><div style=" color:#000000; font-family:Arial, Helvetica, sans-serif; font-size:12px; margin-bottom:3px;"> USUARIO: '
.$row['usuario'].'</strong><br><br><br>
          <strong>TU CLAVE : </strong>'
.$row['password'].'</strong><br><br><br>
          <strong>TU EMAIL : </strong>'
.$row['email'].'</strong><br><br><br>
          <strong>TU LINK DE ACTIVACION:<br><a href="'
.$activateLink.'">'.$activateLink.' </strong></a><br><br><br>
          <strong>POR FAVOR HAs CLICK EN LINK DE ARRIBA PARA ACTIVAR tU CUENTA E INGRESAR A LA PAGINA SIN RESTRICCIONES</strong><br><br><br>
          
          <strong>GRACIAS POR REGISTRARTE EN X SITIO</strong><br><br><br>
    </div>
    </td>
  </tr>
</table>'
;



$formato          "html";

//*****************************************************************//
$headers  "From: $nombre_origen <$email_origen> \r\n";
$headers .= "Return-Path: <$email_origen> \r\n";
$headers .= "Reply-To: $email_origen \r\n";


$headers .= "X-Sender: $email_origen \r\n";

$headers .= "X-Priority: 3 \r\n";
$headers .= "MIME-Version: 1.0 \r\n";
$headers .= "Content-Transfer-Encoding: 7bit \r\n";

//*****************************************************************//
 
if($formato == "html")
 { 
$headers .= "Content-Type: text/html; charset=iso-8859-1 \r\n";  }
   else
    { 
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";  }

@
mail($email_destino$asunto$mensaje$headers); 
    }
    }
    }
    }
}else{
    

Bueno, ya has enviado el correo con la liga. Ahora, es aquí en donde valido que el usuario me haya dando un correo que sea de él, en activar_cuenta.php:

Código PHP:
//recogemos los valores enviados por el link de activacion que mandamos por mail
if (isset($_GET['id'])) {

$idval=$_GET['id'];
$activate2=$_GET['activateKey'];  ;




        //y aqui es donde cambiamos el valor 1=desactivado  por valor 0=activado

$query = "UPDATE promuser
            SET estado = '0' WHERE  id_usuarios = $idval and activate ='$activate2' ;
                mysql_query($query) or die(mysql_error());
    
                
            


?>
            
            <SCRIPT LANGUAGE="javascript">
            location.href = "index.php";
            
        </SCRIPT>
        
<?

}else{
        echo 
"activacion incompleta.";
        
        }
Gran parte de este código creo haberlo tomado de este foro, pero no recuerdo quién fue quien lo posteo, pero igual creo que funciona bien.

Saludos y espero que te sirva!