Aqui otra vez yo pidiendo una manita.
Como lo dice el titulo necesito armar un modulo de recordar contraseña.
Tengo a mis usuarios ingresados en una tabla de mi db y quiero que a traves de un formulario ingrese su e-mail, se verifique su existencia en la base y se le envie un mail a dicha cuenta con su contraseña.
Habia pensado utilizar la estructura clasica de envio de mails desde una pagina php.
Armar un formulario en donde se ingresa el e-mail del solicitante, recibirlo desde otra pagina mediante un post, hacer la busqueda en sql y si devuelve un resultado positivo continuar con el envio de mail ingresando la variable que me dio como respuesta la consulta.
El tema es que no se manejar muy bien que pasaria si no encuentra el mail en la db.
Muchas Gracias
Hola Gusanito,
Por que no haces que si no encuentra nada lo redireccione automaticamente a cierta pagina (la redireccion en PHP la haces con la funcion header(); por ejemplo header("Location: http://www.tu_sitio.com/pagina6.html"); y ningun echo se debe haber usado antes para que la funcion header() funcione).
Y como sabes que no encontro ningun user en la DB? simple, mysql_fetch_array() devuelve false si no hay datos (o mas datos) en la variable:
$result = mysql_query("TU QUERY ACA");
if ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
// user existe
// mandar mail
echo "enviando mail";
} else {
// user no existe
header("Location: http://www.tu_sitio.com/le_erraste_hermano.html");
}
Una cosa, espero que controles que no pueda haber mas de un usuario con la misma direccion de mail ;)
Baii.
Gracias predicador, justo encontre lo que necesitaba, pero como de costumbre me surgio un nuevo problema.
Este es el codigo que utilizo:
<?
$email = $_POST['mail'];
include("conex2.php");
$link=Conectarse();
$email=mysql_real_escape_string($email);
$status = "OK";
$msg="";
//error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR);
// You can supress the error message by un commenting the above line
if (!stristr($email,"@") OR !stristr($email,".")) {
$msg="La direccion de mail ingresada no es válida<BR>";
$status= "NOTOK";}
echo "<br><br>";
if($status=="OK"){ // validation passed now we will check the tables
$query="SELECT email,usuario,pass FROM tram_usuarios WHERE email = '$email'";
$st=mysql_query($query);
$recs=mysql_num_rows($st);
$row=mysql_fetch_object($st);
$em=$row->email;// email is stored to a variable
if ($recs == 0) { // No records returned, so no email address in our table
// let us show the error message
echo "<center><font face='Verdana' size='2' color=red><b>No se encontro el password</b><br>Disculpe, su e-mail no esta en nuestra base de datos. Para poder acceder al sitio debe sacar una cuenta. <BR><BR><a href='index.php'> Volver </a> </center>";
exit;}
// formating the mail posting
// headers here
$headers4="admin@sitename.com"; // Change this address within quotes to your address
$headers.="Reply-to: $headers4\n";
$headers .= "From: $headers4\n";
$headers .= "Errors-to: $headers4\n";
//$headers = "Content-Type: text/html; charset=iso-8859-1\n".$headers;
// for html mail un-comment the above line
// mail funciton will return true if it is successful
if(mail("$em","Ud o alguien vinculado a su cuenta ha requerido el envio del password","Esta es una respuesta a su solicitud de datos de logueo en www.reporteinmobiliario.com \n \nUsuario: $row->userid \n Password: $row->password \n\n Muchas Gracias \n \n www.reporteinmobiliario.com","$headers")){echo "<center><font face='Verdana' size='2' ><b>Muchas Gracias</b> <br>Su password ha sido enviado al mail del administrador de la cuenta. En unos minutos lo recibira.</center>";}
else{// there is a system problem in sending mail
echo " <center><font face='Verdana' size='2' color=red > Se presentaron problemas para enviar el password a su cuenta de mail. Por favor contactese con el administrador del sitio <br><br><input type='button' value='Retry' onClick='history.go(-1)'></center></font>";}
}
else {// Validation failed so show the error message
echo "<center><font face='Verdana' size='2' color=red >$msg <br><br><input type='button' value='Retry' onClick='history.go(-1)'></center></font>";}
?>
Gusanito, el problema esta en que tanto mysql_num_rows() como mysql_fetch_object() recieb un resource como parametro, pero si el resultado del query es cero mysql_query() no devuelve un resource sino que devuelve false; por eso cuando lo probaste con un mail inexistente te dio ese error; en cambio el codigo que yo te puse se hace cargo de ese problema.
Baii
predicador, mil gracias, ya lo hice andar y va todo de 10