Ver Mensaje Individual
  #35 (permalink)  
Antiguo 13/06/2010, 16:02
Lecom
 
Fecha de Ingreso: mayo-2010
Ubicación: Argentina
Mensajes: 11
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: APORTE: Activacion de cuenta de usuarios via e-mail.

Si mira yo tengo el formulario asi

reg.php

Código PHP:
<center>
<body>
<p>&nbsp;</p>
<p align="center"> 
      <div align="center">
  <table>
    <tr>
      <td>
<form action="index.php?index=reg" method="post" name="formreg" id="formreg" onsubmit="return checkform(this)"><tr>
      <td><div  id="loguin"align="left"><span class="style1"><b><img src="required.gif" width="14" height="14"> Login  </b></span>-</div></td>
      <td>
        <input type="text" name="account" id="user" maxlength="15" size="20" /></b></td>
     </tr>
    <tr>
      <td><div  id="loguin"align="left"><span class="style1"><b><img src="required.gif" width="14" height="14"> Email  </b></span>-</div></td>
      <td>
        <input type="text" name="email" id="user" maxlength="150" size="20" /></b></td>
     </tr>
    <tr>
      <td><div id="loguin"align="left"><span class="style1"><b><img src="required.gif" width="14" height="14"> Password  </b></span>-</div></td>
      <td>
        <input type="password" name="password" id="pass" maxlength="15" size="20" /></td>
     </tr>
    <tr>
      <td><div id="loguin"align="left"><span class="style1"><b><img src="required.gif" width="14" height="14"> Repetir Password  </b></span>-</div></td>
      <td>
        <input type="password" name="password2" id="pass" maxlength="15" size="20" /></td>
     </tr>
    <tr>
      <td><div id="loguin"align="left"><span class="style1"><b><img src="required.gif" width="14" height="14"> Pregunta Secreta  </b></span>-</div></td>
      <td>
        <input type="text" name="question" id="user" maxlength="15" size="20" /></b></td>
     </tr>
    <tr>
      <td><div  id="loguin"align="left"><span class="style1"><b><img src="required.gif" width="14" height="14"> Respuesta Secreta - </b></span></div></td>
      <td>
        <input type="text" name="answer" id="user" maxlength="15" size="20" /></b></td>
     </tr>
  </table>
  <p>&nbsp;</p>
  <p>
    <input type="submit" name="submit" id="botao" value="Registrar" />
    <input name="reset" type="reset" id="botao" value="Limpiar" />
  </p>
  <p>&nbsp;</p>
</div>
<div align="center">
  <div id="confirmacao"><?php
  session_start
(); 
//datos para establecer la conexion con la base de mysql. 
mysql_connect('','','')or die ('Ha fallado la conexión: '.mysql_error()); 
mysql_select_db('')or die ('Error al seleccionar la Base de Datos: '.mysql_error()); 
  
//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);  
} 

                  
//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);   
                  
//listo                  
                                   
if(ereg("^([a-zA-Z0-9_-])*$", $_POST['account']) && ereg("^([a-zA-Z0-9_-])*$", $_POST['password']) && ereg("^([a-zA-Z0-9_-])*$", $_POST['password2']) && ereg ("^([a-zA-Z0-9_-])*$", $_POST['question']) && ereg ("^([a-zA-Z0-9_-])*$", $_POST['answer']))
{
    if (
$page="index.php" && $_POST['account'] && strlen($_POST['account'])<16 && strlen($_POST['account'])>3 && $_POST['password'] && $_POST['password2'] && $_POST['password']==$_POST['password2'])
    {    
        
$check=mysql_query("select * from accounts where login='".$_POST['account']."'");
        
$check1=mysql_num_rows($check);
        if(
$check1>0)
        {
            echo 
"<p clss='error'><center /><b><font color=\"red\" />Error en el registro, la Cuenta ya existe </b></p>";
        }
        
$check=mysql_query("select * from accounts where email='".$_POST['email']."'");
        
$check1=mysql_num_rows($check);
        if(
$check1>0)
        {
            echo 
"<p clss='error'><center /><b><font color=\"red\" />Error en el registro, el E-mail ya existe </b></p>";
        }
        else
        {
              
mysql_query("INSERT INTO accounts (login, password, email, question, answer, activate, estado) VALUES ('".$_POST['account']."', '".base64_encode(pack('H*', sha1($_POST['password'])))."', '".$_POST['email']."', '".$_POST['question']."', '".$_POST['answer']."', '".activate."', 1)", $link);
              
mysql_close($link);
                
mysql_query($query) or die(mysql_error());
                             
                             
                
                                
$query = "SELECT * FROM accounts WHERE login='$account'"; 
         
$result = mysql_query($query , $conexion) or die ( mysql_error() ); 
         
$row   = mysql_fetch_array($result);

                      
          
         
$path="http://www.l2playmate.com.ar/"; //creamos nuestra direccion, con las carpetas que sean si hay 
         //armamos nuestro link para enviar por mail en la variable $activateLink 
$activateLink=$path."index.php?index=activar_cuenta?id=".$row['id']."&activateKey=".$activate.""; 
                 
                          
// Datos del email 

$nombre_origen    = "Soporte L2Playmate"; 
$email_origen     = "[email protected]"; 
$email_copia      = "[email protected]"; 
$email_ocultos    = "[email protected]"; 
$email_destino    = "".$row['email']."";   



$asunto           = "Activacion de la cuenta:".$row['login'].""; 

$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> Datos de la cuenta:, '
.$row['login'].'</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;"> 
          <strong>Login: </strong>'
.$row['login'].'</strong><br><br><br> 
          <strong>Password: </strong>'
.$row['password'].'</strong><br><br><br> 
          <strong>Email: </strong>'
.$row['email'].'</strong><br><br><br> 
          
          <strong>Link de Activacion:<br><a href="'
.$activateLink.'">'.$activateLink.' </strong></a><br><br><br> 
          <strong>Para completar el registro tienes que activar tu cuenta con el Link de Activacion que esta por encima</strong><br><br><br> 
          <strong>Este link es propio y solo es valido para la cuenta:'
.$row['login'].'</strong><br><br><br> 
           
          <strong>Guarde este e-mail por cualquier problema.</strong><br><br><br> 
        
          <strong>Saludos,Atte L2Playmate.</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";  } 

if (
mail($email_destino,$asunto,$mensaje,$headers)){ 
   echo 
"registro incompleto"; 
}  
            print 
'<p class="error"><center><b><font color="gold" />La Cuenta: <font color="green">'.$_POST['account'].'</font> se creo correctamente. </b></p></center>';
        }
    }
    else
    {
      print 
'<p class="error"><b> </b></p>'.mysql_error();
    }
}
else
{
    echo 
"As limitações não foram testadas para a segurança. Se você for confiável que tido a informação correta, consultar por favor à administração. ";
}
?> 
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p><img src="barrasep.png" width="400" height="56"></p>
  </div>
</div>
y luego tengo el activar_cuenta.php

Código PHP:
<?php  

mysql_connect
('','','')or die ('Ha fallado la conexión: '.mysql_error()); 
mysql_select_db('')or die ('Error al seleccionar la Base de Datos: '.mysql_error()); 


//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 usuarios 
            SET estado = '0' WHERE   id = '$idval' AND activate ='$activate2' " 
; 
                
mysql_query($query) or die(mysql_error()); 
     
                 
             


?> 
             
<?php
header
("location: index.php?index=home"); 
exit(); 
?>
         
<? 

}else{ 
        echo 
"activacion incompleta."; 
         
        } 
         

?>
Aclaro la coneccion a la DB la borre por cuestion se seguridad pero esta bien colocado porque tengo otros scripts andando conectados a mi db con la misma informacion


PD:Yo en el index.php tengo todas las paginas como

Código PHP:
case 'activar_cuenta':
include 
"paginas/activar_cuenta.php";
break; 
y para ir a una pagina siempre uso esta forma para link de vinculo index.php?index=home

Muchas gracias