Comunidad de diseño web y desarrollo en internet online

Recuperar Password ingresando matrícula en form

Citar            
MensajeEscrito el 19 Feb 2014 05:22 pm
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

Código PHP :

<?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 <[email protected]>\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

Código HTML :

<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

Código 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_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

Código HTML :

<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>

Por elesanchezf

3 de clabLevel



Genero:Masculino  

soy diseñador web

chrome
Citar            
MensajeEscrito el 19 Feb 2014 05:32 pm
algo pasa con tus condiciones, verifica si se cumple eso de

$hash = md5(md5($row['mat']).md5($row['password']));

if($hash == $id) <<<<< Esta

tambien imprimer la variable $mail para saber si realmente lleva un mail, por que si no No va poder actualizar.


Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 19 Feb 2014 05:44 pm
si me trae el email que es del usuario pero no hace e cambio del pass.

mira este es el link me me manda
http://www.miweb.com.mx/bolsa/nw/pass.php?id=6a0e60670a4f5da25cd7090ab07c9162&[email protected]

la parte que me dices que cheque es en el archivo pass.php verdad?

row = mysql_fetch_assoc($resEmp);
$hash = md5($row['password']);

if($hash == $id){

Por elesanchezf

3 de clabLevel



Genero:Masculino  

soy diseñador web

chrome
Citar            
MensajeEscrito el 19 Feb 2014 05:51 pm
si amigo checa por que no se como haces coincidir eso :(

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 19 Feb 2014 06:11 pm
pues la verdad eso lo saque de un tutorial en un foro, yo lo modifique para que me enviera el email pero no tengo en si una respuesta de que o que hace ese pedasito, lo he cambiado para que me pida la matricula en ves del email pero tiene que ir a buscar la matricula y buscar el email para enviarme el pass.. rallos esto del php si que es complicado. me ayudas hermano?

Por elesanchezf

3 de clabLevel



Genero:Masculino  

soy diseñador web

chrome
Citar            
MensajeEscrito el 19 Feb 2014 06:47 pm
ya descubri en donde estaba el error, en el formulario de pass.php me faltaba poner el metodo post, y ya funsiona con ganas.

tengo una duda, quiero que los mensajes de errores me aparescan arriba del form no en una pagina en blanco. si funsiona bien en forgot.php cuando ingreso el email correcto y me envia la url para hacer el cambio pero cuando ingreso uno que no es me muestra el error pero en una pagina en blanco. como le hago?

Por elesanchezf

3 de clabLevel



Genero:Masculino  

soy diseñador web

chrome
Citar            
MensajeEscrito el 20 Feb 2014 01:42 am
Aqui en Cristlab hay tutoriales de "Jquery AJAX" es lo que necesitas para retornar los mensajes en la misma página.

Saludos.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

firefox
Citar            
MensajeEscrito el 20 Feb 2014 07:36 pm
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

Código PHP :

<?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 <[email protected]>\r\n";  
      $headers .= "CC: [email protected]\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

Código HTML :

<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

Código PHP :

<?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

Código HTML :

<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.

Por elesanchezf

3 de clabLevel



Genero:Masculino  

soy diseñador web

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.