PHP - Recuperar Password ingresando matrícula en form

   
Vista:
Imágen de perfil de Eleazar

Recuperar Password ingresando matrícula en form

Publicado por Eleazar (4 intervenciones) el 19/02/2014 18:15:37
hola buenas tardes , miren tengo un formulario de recuperación del password, lo he modificado porque no me enviaba el mail con la url para cambiar el pass, ya envía y me muestra el formulario para cambiar el password que esta en md5 en mi bd, pero no hace ningún cambio en la base de datos todo sigue igual no se en donde esta mi error, podrían ayudarme programadores. anteriormente el usuario ingresaba la matricula para recuperar su pass, pero no me funciona por eso estoy haciendo pruebas con el email pero debe de ser la matricula.

el form que captura la matrícula. pero lo cambie al email. forgot.php

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
<?php
if($_POST['button']){
    if($_POST['mail']){
 
        $mail = htmlentities($_POST['mail']);
 
        $link = mysql_connect ($hostname_bolsadetrabajo, $username_bolsadetrabajo, $password_bolsadetrabajo) or die(mysql_error());
        mysql_select_db($database_bolsadetrabajo,$link);
 
        $queEmp = "SELECT * FROM bolsadetrabajobd WHERE email='$mail'";
        $resEmp = mysql_query($queEmp, $link) or die(mysql_error());
        $totEmp = mysql_num_rows($resEmp);
        if($totEmp == 0){
        echo "La matr&iacute;cula que has ingresado no existe";
 
        exit();
        }
 
        $row = mysql_fetch_assoc($resEmp);
        $hash = md5($row['password']);
 
        $headers .= "From:Recuperar password <eleazar.sanchez@fldm.edu.mx>\r\n";
        $message = "Para recuperar tu contrase&ntilde;a da click en la url de abajo.
        http://www.fldm.edu.mx/bolsadetrabajo/nw/pass.php?id=".$hash."&mail=".$mail."";
        //echo ($message);
        if (mail($mail,"Recuperar password",$message,$headers)){
        $msg = "Se te envio un link a tu mail para cambiar la password";
        }
    }
}
?>

este es el formulario forgot.php

1
2
3
4
5
6
7
8
9
10
11
<form action="forgot.php" class="login-form" method="post" name="recupera">
 
                <span class="centr"><img src="css/Logo.png" width="334" height="82" alt="Fldm Logo"></span>
                <br/ >
                <br />
                <em><?=$msg?></em>
 
                <input name="mail" type="text" class="login-input" id="mail" placeholder='Ingresa tu email...'>
 
	<input type="submit" class="login-btn" value="Recuperar" name="button" id="button">
			</form>

codigo php del form para cambiar el pass pass.php

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
<?
$id = htmlentities($_GET['id']);
$mail = htmlentities($_GET['mail']);
$pass = md5($_POST['pass']);
if($_POST['button']){
    if(isset($id) && isset($mail)){
        $link = mysql_connect ($hostname_bolsadetrabajo, $username_bolsadetrabajo, $password_bolsadetrabajo);
        mysql_select_db($database_bolsadetrabajo,$link);
 
        $queEmp = "SELECT * FROM usuarios WHERE email='$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(md5($row['mat']).md5($row['password']));
 
        if($hash == $id){
        $sql = "UPDATE usuarios SET password='".$pass."' WHERE email='$mail'";
        mysql_query($sql,$link);
        echo "Contrase&ntilde;a cambiada correctamente";
        echo ($sql);
        exit();
        }
    }
}
?>

el formulario de pass.php

1
2
3
4
5
6
<form name="form1" action="pass.php?id=<?=$id?>&mail=<?=$mail?>" class="login-form">
<input type="password" name="pass" id="pass" class="login-input" placeholder='Ingresa tu nueva contrase&ntilde;a...'>
 
  <input type="submit" class="login-btn" value="Guardar" name="button" id="button">
 
</form>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Recuperar Password ingresando matrícula en form

Publicado por xve (5522 intervenciones) el 19/02/2014 19:18:43
Hola Eleazar, creo te falta indicar en el formulario que se envié en formato post...

Prueba así:
1
<form name="form1" action="pass.php?id=<?=$id?>&mail=<?=$mail?>" class="login-form" method="POST">

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eleazar

Recuperar Password ingresando matrícula en form

Publicado por Eleazar (4 intervenciones) el 19/02/2014 19:27:14
muchisimas gracias algo tan simple que no veia, ya funcionó perfectisimo.
ahora como comentaba al principio, funsionó con el email pero el detalle es que no es el email si no la matricula ( campo eb bd mat) pero no me funsiona no se en que me falla, se que tengo que cambiar las variables mail por mat. pero no se donde esta mi error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eleazar

Recuperar Password ingresando matrícula en form

Publicado por Eleazar (4 intervenciones) el 19/02/2014 19:50:58
gracias a xve ya funsiona perfecto, tengo una duda como le hago para que los errores me aparescan arriba del formulario y no en una pagina en blanco? aqui estan el codigo de los errores.

if($totEmp == 0){
echo "La matr&iacute;cula que has ingresado no existe";
exit(); // intente hacer lo mismo de abajo pero no me muestra nada
}


este si funsiona bien

if (mail($mail,"Recuperar password",$message,$headers)){
$msg = "Se te envio un link a tu mail para cambiar la password";

arriba de mi form coloco esto para que me muestra el mensaje.

<em><?=$msg?></em>
me ayudan? .gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eleazar

Recuperar Password ingresando matrícula en form

Publicado por Eleazar (4 intervenciones) el 20/02/2014 20:36:20
ya me fusiona el código, esta perfectisimo, que es lo que hace?
el usuario registrado ingresa su email en forgot.php y se le envía una url para el restablecimiento de su pass al email luego al abrir la url el usuario entra a password_reset.php ingresa su nueva contraseña y listo ya puede iniciar sesión a pero una ves hecho el cambio se le muestra la confirmación password_reset_confirmation.php, la contraseña esta encriptada y se cambia encriptada.
este es el código completo php del archivo forgot.php

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
<?php require_once('Connections/tubd.php'); ?>
 
<?php
 
if($_POST['button']){
	if($_POST['mail']){
		if(empty($_POST['mail'])) {
            $error =false;
		}
		$mail = htmlentities($_POST['mail']);
		$link = mysql_connect ($hostname_bd, $username_bd, $password_bd) or die(mysql_error());
        mysql_select_db($database_bd,$link);
 
		$queEmp = "SELECT * FROM tutabla WHERE email='$mail'";
		$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 =\"forgot.php\"; </script>";
 
		exit();
		}
		$row = mysql_fetch_assoc($resEmp);
		$hash = md5($row['password']) or die(mysql_error());
 
		$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..";
		}
	}
}
?>
este es el código del formulario en forgot.php
1
2
3
4
5
6
7
<form action="forgot.php" class="login-form" method="post" name="recupera">
 <em><?=$msg?></em>
                <input name="mail" type="text" required="required" class="login-input" id="mail" placeholder='Ingresa tu email' value="">
 
	<input type="submit" class="login-btn" value="Recuperar" name="button" id="button">
 
			</form>

y este es el código PHP de password_reset.php
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
<?php require_once('Connections/tubd.php'); ?>
<?
$id = htmlentities($_GET['id']);
$mail = htmlentities($_GET['mail']);
 
$pass = md5($_POST['pass']);
if($_POST['button']){
	if(isset($id) && isset($mail)){
		$link = mysql_connect ($hostname_bd, $username_bd, $password_bd);
        mysql_select_db($database_bd,$link);
 
		$queEmp = "SELECT * FROM tutabla WHERE email='$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['password']);
 
		if($hash == $id){
		$sql = "UPDATE tutabla SET password='".$pass."' WHERE email='$mail'";
		mysql_query($sql,$link);
		$msg = " Contrase&ntilde;a cambiada correctamente";
		header('Location: password_reset_confirmation.php');
 
 
		}
	}
}
?>

y este del formulario

1
2
3
4
5
6
7
8
<form name="form1" action="password_reset.php?id=<?=$id?>&mail=<?=$mail?>" class="login-form" method="post">
<em><?=$msg?></em>
 
  <input name="pass" type="password" required="required" class="login-input" id="pass" placeholder='Ingresa tu nueva contrase&ntilde;a...'>
 
  <input type="submit" class="login-btn" value="Guardar" name="button" id="button">
 
</form>

y eso es todo muchas gracias por la ayuda... nos vemos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Recuperar Password ingresando matrícula en form

Publicado por xve (5522 intervenciones) el 20/02/2014 21:01:02
Gracias por compartirlo Eleazar!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar