
Restablecer contraseña mediante correo
Publicado por Stark1407 (5 intervenciones) el 15/09/2016 23:19:02
Hola a todos.
Tengo el siguiente problema, intento recuperar la contraseña de un usuario mediante un correo electrónico. He buscado información y justamente en este foro hay un compañero que lo ha conseguido pero a mí no me funciona.
Os indico donde encontré el código- URL: http://www.lawebdelprogramador.com/foros/PHP/1422680-Recuperar-Password-ingresando-matricula-en-form.html.
Por nada quiero atribuirme el merito de código
Pues bien, yo lo he estructurado de la siguiente forma:
1-He creado un form donde indico que escriban el correo.
2- Al llegar a la página tiene el código para verificar si existe el correo en la BBDD y en caso positivo que envié el correo con los valores (pass y correo):
Hasta aquí todo perfecto, el correo se envía con los parámetros id y correo.
Ahora bien, el problema aparece en el siguiente apartado:
3- He creado una página llamada pass_reset.php con el siguiente formulario que directamente me da un error (adjunto captura del error), la URL enviada por correo y que el usuario ha de dar es: http://prueba/pass_reset.php?id=pass(encriptado en md5)d&[email protected]

4- Al enviar se redirecciona a "password_reset_conf.php", con el siguiente código:
En este punto si introducimos cualquier texto,directamente no aparece ningún mensaje. He probado mil cosas y creo que no estoy entendiendo el concepto del anterior compañero.
Agradecería que alguien pueda ayudarme al respecto.
Ante todo muchas gracias a todos.
Un saludo.
Tengo el siguiente problema, intento recuperar la contraseña de un usuario mediante un correo electrónico. He buscado información y justamente en este foro hay un compañero que lo ha conseguido pero a mí no me funciona.
Os indico donde encontré el código- URL: http://www.lawebdelprogramador.com/foros/PHP/1422680-Recuperar-Password-ingresando-matricula-en-form.html.
Por nada quiero atribuirme el merito de código
Pues bien, yo lo he estructurado de la siguiente forma:
1-He creado un form donde indico que escriban el correo.
1
2
3
4
5
6
<form action="rest_pass_conf.php" method="post" class="login-form" ">
<input name="correo_usuario" type="text" required="required" class="login-input" id="correo_usuario" placeholder='Ingresa tu email' value="">
<input type="submit" class="login-btn" value="Recuperar" name="button" id="button">
</form>
2- Al llegar a la página tiene el código para verificar si existe el correo en la BBDD y en caso positivo que envié el correo con los valores (pass y correo):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
$button=$_POST['button'];
$correo_usuario=$_POST['correo_usuario'];
if($button){
if($correo_usuario){
if(empty($correo_usuario)) {
$error =false;
}
$mail = htmlentities($correo_usuario);
$link = mysql_connect ($hostname_bd, $username_bd, $password_bd) or die(mysql_error());
mysql_select_db($database_bd,$link);
$queEmp = "SELECT * FROM usuarios WHERE correo_usuario='$correo_usuario'";
$resEmp = mysql_query($queEmp, $link) or die(mysql_error());
$totEmp = mysql_num_rows($resEmp);
if($totEmp == 0){
$error = true;
echo "<script language=Javascript> window.location =\"rest_pass_error.php\"; </script>";
exit();
}else{
echo "";
}
$row = mysql_fetch_assoc($resEmp);
$hash = md5($row['pass_usuario']) or die(mysql_error());
$headers ="Hola";
$headers .= "From:Nueva clave de usuario <tucorreo@dominio.com>\r\n";
$headers .= "CC: concopiaa@dominio.com\r\n";
$message = "hemos recibido una
solicitud para restablecer tu contraseña.
Para restablecer la contraseña, haz clic o copia y pega la URL en tu navegador.
http://www.tuweb.com/password_reset.php?id=".$hash."&mail=".$mail."
Si estás recibiendo muchos correos electrónicos de restablecimiento de contraseña que no solicitaste, puedes cambiarla Iniciando sesión para prevenir el robo de información.
Por favor, no respondas a este mensaje; fue enviado desde una dirección de correo electrónico no supervisada. Este mensaje es un servicio de correo electrónico relacionado con tu uso en el portar.";
//echo ($message);
if (mail($mail,"Recuperar password",$message,$headers)){
$msg = "Hemos enviado las instrucciones de restablecimiento de contraseña a tu dirección de correo electrónico, Si no recibes las instrucciones dentro de pocos minutos, revisa el spam de tu correo electrónico y correo no deseado..";
}
}
}
?>
Hasta aquí todo perfecto, el correo se envía con los parámetros id y correo.
Ahora bien, el problema aparece en el siguiente apartado:
3- He creado una página llamada pass_reset.php con el siguiente formulario que directamente me da un error (adjunto captura del error), la URL enviada por correo y que el usuario ha de dar es: http://prueba/pass_reset.php?id=pass(encriptado en md5)d&[email protected]

1
2
3
4
5
6
7
<form name="form1" action="password_reset_conf.php?id=<?=$id?>&mail=<?=$mail?>" class="login-form" method="get">
<input name="pass_usuario" type="password" required="required" class="login-input" id="pass_usuario" placeholder='Ingresa tu nueva contraseña...'>
<input type="submit" class="login-btn" value="Guardar" name="button" id="button">
</form>
4- Al enviar se redirecciona a "password_reset_conf.php", con el siguiente código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?
$id = htmlentities($_GET['id']);
$mail = htmlentities($_GET['mail']);
$pass = md5($_POST['pass_usuario']);
if($_POST['button']){
if(isset($id) && isset($mail)){
$link = mysql_connect ($hostname_bd, $username_bd, $password_bd);
mysql_select_db($database_tienda_online,$link);
$queEmp = "SELECT * FROM usuarios WHERE correo_usuario='$mail'";
$resEmp = mysql_query($queEmp, $link) or die(mysql_error());
$totEmp = mysql_num_rows($resEmp);
if($totEmp == 0){
echo "El mail ingresado no existe";
exit();
}
$row = mysql_fetch_assoc($resEmp);
$hash = md5($row['pass_usuario']);
if($hash == $id){
$sql = "UPDATE usuarios SET pass_usuario='".$pass."' WHERE correo_usuario='$mail'";
mysql_query($sql,$link);
$msg = " Contraseña cambiada correctamente";
header('Location: password_reset_confirmation.php');
}
}
}
?>
En este punto si introducimos cualquier texto,directamente no aparece ningún mensaje. He probado mil cosas y creo que no estoy entendiendo el concepto del anterior compañero.
Agradecería que alguien pueda ayudarme al respecto.
Ante todo muchas gracias a todos.
Un saludo.
Valora esta pregunta


0