13/06/2010, 16:02
|
| | Fecha de Ingreso: mayo-2010 Ubicación: Argentina
Mensajes: 11
Antigüedad: 14 años 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> </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> </p> <p> <input type="submit" name="submit" id="botao" value="Registrar" /> <input name="reset" type="reset" id="botao" value="Limpiar" /> </p> <p> </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> </p> <p> </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 |