Foros del Web » Programando para Internet » PHP »

Script php para recuperar contraseña MD5

Estas en el tema de Script php para recuperar contraseña MD5 en el foro de PHP en Foros del Web. Hola ¿Como Estan? Los molesto que estoy tratando de armar un script para poder recuperar contraseñaS encriptada en MD5 desde una base de datos MYSQL, ...
  #1 (permalink)  
Antiguo 28/11/2010, 12:17
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Pregunta Script php para recuperar contraseña MD5

Hola ¿Como Estan? Los molesto que estoy tratando de armar un script para poder recuperar contraseñaS encriptada en MD5 desde una base de datos MYSQL, viendo temas viejos del foro encontre el siguiente posteo:


http://www.forosdelweb.com/f18/ayuda-con-scripts-php-recuperar-contrasena-712321


Al armarlo me da error de sintaxis en la linea 34 y no logro comprender donde esta el error.-


Código PHP:
<?php  
// Este fichero recibe y procesa los datos del formulario de recuperacion de contraseña  
// en el que se escriben usuario y email  

// recogemos las variables enviadas por el formulario  
$nombreusuario=$_POST['nombreusuario'];  
$emailusuario=$_POST['emailusuario'];  

// Conectamos a la base de datos  
// Las variables de conexion se suelen poner en un fichero de configuracion que se incluye  
include "bdconfigmail.php";  
$con mysql_connect($dbhost$dbusername$dbpass);  
if(!
$con) { 
        die(
'Failed to connect to server: ' mysql_error()); 
    } 
     
    
//Select database 
    
$db mysql_select_db($dbname); 
    if(!
$db) { 
        die(
"Unable to select database"); 
    } 
    
// Consultamos si existe $nombreusuario + $emailusuario  
$res=mysql_query("SELECT COUNT(*) FROM members WHERE login='$nombreusuario' AND email='$emailusuario'");  

if (
mysql_num_rows($res)==0) {  
// Si no existe, datos incorrectos y fin del proceso y volvemos al formulario de recuperacion  
header("Location:formulario.php");  
}  
else {  
$better_token md5(uniqid(mt_rand(), true));
$better_token substr($better_token06);
*
$res mysql_query("UPDATE members SET passwd = '$better_token' WHERE login='$nombreusuario' AND email='$emailusuario'");
*
if(
$res) {
mail($emailusuario"Recuperacion de Contraseña""Tu contraseña nueva es: $better_token");
}
?>
Aguardo comentarios de los que saben!

Muchas gracias por la ayuda y disculpas por las molestias

Última edición por PxHx; 28/11/2010 a las 12:18 Razón: link
  #2 (permalink)  
Antiguo 28/11/2010, 12:20
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Me olvidaba de aclarar, el password en la base de datos se aguarda encriptado como MD5, lo ideal seria que envie un nuevo password al mail que esta cargado en la base de datos no al ingresado en el form.-


Muchas Gracias
  #3 (permalink)  
Antiguo 28/11/2010, 12:29
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 15 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Script php para recuperar contraseña MD5

el codigo esta bien pero en las ultimas lineas que dice

Código PHP:
Ver original
  1. *
  2. $res = mysql_query("UPDATE members SET passwd = '$better_token' WHERE login='$nombreusuario' AND email='$emailusuario'");
  3. *
  4. if($res) {
  5. * mail($emailusuario, "Recuperacion de Contraseña", "Tu contraseña nueva es: $better_token");

quitale los asteriscos y debe verse asi

Código PHP:
Ver original
  1. $res = mysql_query("UPDATE members SET passwd = '$better_token' WHERE login='$nombreusuario' AND email='$emailusuario'");
  2.  
  3. if($res) {
  4. mail($emailusuario, "Recuperacion de Contraseña", "Tu contraseña nueva es: $better_token");

y tambien decir que el script si renueva la contraseña como se muestra la consulta UPDATE y envia la nueva contraseña al usuario
saludos
  #4 (permalink)  
Antiguo 28/11/2010, 12:34
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

En el codigo mio figura sin los astericos, se subieron ahí

Código PHP:
// Este fichero recibe y procesa los datos del formulario de recuperacion de contraseña  
// en el que se escriben usuario y email  

// recogemos las variables enviadas por el formulario  
$nombreusuario=$_POST['nombreusuario'];  
$emailusuario=$_POST['emailusuario'];  

// Conectamos a la base de datos  
// Las variables de conexion se suelen poner en un fichero de configuracion que se incluye  
include "bdconfigmail.php";  
$con mysql_connect($dbhost$dbusername$dbpass);  
if(!
$con) { 
        die(
'Failed to connect to server: ' mysql_error()); 
    } 
     
    
//Select database 
    
$db mysql_select_db($dbname); 
    if(!
$db) { 
        die(
"Unable to select database"); 
    } 
    
// Consultamos si existe $nombreusuario + $emailusuario  
$res=mysql_query("SELECT COUNT(*) FROM members WHERE login='$nombreusuario' AND email='$emailusuario'");  

if (
mysql_num_rows($res)==0) {  
// Si no existe, datos incorrectos y fin del proceso y volvemos al formulario de recuperacion  
header("Location:formulario.php");  
}  
else {  
$better_token md5(uniqid(mt_rand(), true));
$better_token substr($better_token06);

$res mysql_query("UPDATE members SET passwd = '$better_token' WHERE login='$nombreusuario' AND email='$emailusuario'");

if(
$res) {
mail($emailusuario"Recuperacion de Contraseña""Tu contraseña nueva es: $better_token"); 

Lo volví a probar y el error esta en la linea

Código PHP:
$res mysql_query("UPDATE members SET passwd = '$better_token' WHERE login='$nombreusuario' AND email='$emailusuario'"); 

Alguna sugerencia?¿




Muchas gracias a todos!
  #5 (permalink)  
Antiguo 28/11/2010, 12:39
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 15 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Script php para recuperar contraseña MD5

que falto cerrar la llave del ELSE final, indentando el codigo deberia verse asi al final:

Código PHP:
Ver original
  1. else {  
  2.     $better_token = md5(uniqid(mt_rand(), true));
  3.     $better_token = substr($better_token, 0, 6);
  4.    
  5.     $res = mysql_query("UPDATE members SET passwd = '$better_token' WHERE login='$nombreusuario' AND email='$emailusuario'");
  6.    
  7.     if($res) {
  8.         mail($emailusuario, "Recuperacion de Contraseña", "Tu contraseña nueva es: $better_token");
  9.     }
  10. }

y dcir que el script no enviar el pass al ingresar el formulario, primero recoge los datos ingresados, los verifica si existen en la bd y luego recien envia el pass al usuario como dicen las condicionales del codigo
saludos
  #6 (permalink)  
Antiguo 28/11/2010, 12:45
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Modifiqué el código tal como me dijiste y aparece el siguiente error:

Parse error: syntax error, unexpected T_STRING in email.php on line 31

La Linea sería:

Código PHP:
 $better_token md5(uniqid(mt_rand(), true)); 

Lo que necesitaría seria que se ingrese el nombre de usuario y que se cambie la clave actual que se encuentra encriptada y el usuario reciba un mail con su nueva clave.-

Muchas gracias por la ayuda
  #7 (permalink)  
Antiguo 28/11/2010, 12:50
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 15 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Script php para recuperar contraseña MD5

como dice el error, tienes un error de sintaxis pero el error no es en la linea que describes, a veces hace referencia a una linea posterior o anterior porque dicha linea no es erronea, solo devuelve un pass unico, bueno el codigo completo sin error se ve asi:

Código PHP:
Ver original
  1. <?php  
  2. // Este fichero recibe y procesa los datos del formulario de recuperacion de contraseña  
  3. // en el que se escriben usuario y email  
  4.  
  5. // recogemos las variables enviadas por el formulario  
  6. $nombreusuario=$_POST['nombreusuario'];  
  7. $emailusuario=$_POST['emailusuario'];  
  8.  
  9. // Conectamos a la base de datos  
  10. // Las variables de conexion se suelen poner en un fichero de configuracion que se incluye  
  11. include "bdconfigmail.php";  
  12. $con = mysql_connect($dbhost, $dbusername, $dbpass);  
  13. if(!$con) {
  14.         die('Failed to connect to server: ' . mysql_error());
  15.     }
  16.      
  17.     //Select database
  18.     $db = mysql_select_db($dbname);
  19.     if(!$db) {
  20.         die("Unable to select database");
  21.     }
  22.    
  23. // Consultamos si existe $nombreusuario + $emailusuario  
  24. $res=mysql_query("SELECT COUNT(*) FROM members WHERE login='$nombreusuario' AND email='$emailusuario'");  
  25.  
  26. if (mysql_num_rows($res)==0) {  
  27. // Si no existe, datos incorrectos y fin del proceso y volvemos al formulario de recuperacion  
  28. header("Location:formulario.php");  
  29. }  
  30. else {  
  31.     $better_token = md5(uniqid(mt_rand(), true));
  32.     $better_token = substr($better_token, 0, 6);
  33.    
  34.     $res = mysql_query("UPDATE members SET passwd = '$better_token' WHERE login='$nombreusuario' AND email='$emailusuario'");
  35.    
  36.     if($res) {
  37.         mail($emailusuario, "Recuperacion de Contraseña", "Tu contraseña nueva es: $better_token");
  38.     }
  39. }
  40. ?>

si luego de esto te da error, es porque debes personalizar los campos de la bd del script de ejemplo con los de tu bd
saludos
  #8 (permalink)  
Antiguo 28/11/2010, 13:04
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Una pregunta, puede ser que al copiar el codigo que figura en tu ultimo ejemplo de error de sintaxis en todas las lineas?


Me tiene loco


Gracias!!!
  #9 (permalink)  
Antiguo 28/11/2010, 13:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 15 años, 2 meses
Puntos: 0
Sonrisa Respuesta: Script php para recuperar contraseña MD5

Cita:
Iniciado por PxHx Ver Mensaje
Una pregunta, puede ser que al copiar el codigo que figura en tu ultimo ejemplo de error de sintaxis en todas las lineas?


Me tiene loco


Gracias!!!
No para nada, el codigo esta bien escrito con la corrección de la llave de cierre que puse, tambien debes tener en cuenta que incluye el archivo "bdconfigmail.php" en la linea 11 que son los datos de conexión de tu bd
Código PHP:
Ver original
  1. include "bdconfigmail.php";

si aún tienes error deberias mostrar el codigo completo en el que estas implementandolo
  #10 (permalink)  
Antiguo 28/11/2010, 13:35
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Perfecto, funciono excelente el código, el tema es que el nuevo código no lo encripta en MD5, como se puede agregar eso? y el otro tema es cuando pones un usuario inexistente y un password cualquiera envia un codigo a ese mail que ingresaste por mas que no este en la base de datos


Muchas gracias por la ayuda!
  #11 (permalink)  
Antiguo 28/11/2010, 13:44
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Leendo el codigo diria que es correcto y hace perfectamente lo que dice que hace, el problema es que tienes que editar los campos de la consulta con los de tus tablas, supongo que tu tabla no se llama "members" o quizas no tiene el mismo campo de nombre "login" y asi tienes que editar cada una de esa sección
  #12 (permalink)  
Antiguo 28/11/2010, 13:54
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Logré que el password ingrese encriptado en MD5 a la base de datos, la linea es:


Código PHP:
$res mysql_query("UPDATE members SET passwd = '".md5($better_token)."' WHERE login='$nombreusuario' AND email='$emailusuario'"); 
".md5($better_token)."

El tema es, cuando se llenan los datos en el formulario email y usuario, si el usuario no existe en la base de datos no da error, sino que genera un password igual y lo envia por mail (no lo carga en la base de datos porque no existe)


Gracias!
  #13 (permalink)  
Antiguo 28/11/2010, 14:36
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 15 años, 2 meses
Puntos: 0
Sonrisa Respuesta: Script php para recuperar contraseña MD5

como dije antes, el codigo esta funcional, y solo fue un ejemplo por tal razon no muestra mensajes de error, se supone que uno los debe de implementar, las condicionales dicen claramente que si existe usuario en la bd procede a enviar el pass de lo contrario redirecciona a "formulario.php" es aqui donde tienes que mostrar el mensaje de error, si tienes el codigo en el mismo form puedes crear una variable con un mensaje algo asi en esta parte, es un ejemplo:

Código PHP:
Ver original
  1. if (mysql_num_rows($res)==0) {  
  2. // Si no existe, datos incorrectos y fin del proceso y volvemos al formulario de recuperacion  
  3. //header("Location:formulario.php");  
  4.     $error = "Los datos ingresados son erroneos";
  5. }

y luego mostrarlos en caso que se cumpla

Código PHP:
Ver original
  1. <?php
  2.     echo (isset($error) ? $error : '');
  3. ?>

para usar el script se supone que debes tener conocimientos de php-mysql para agregarle funcionalidades, ya eso queda al criterio de lo que se necesite
  #14 (permalink)  
Antiguo 28/11/2010, 14:52
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Les cuento que estoy comenzando con php por eso mis errores


Enfermin mil gracias por tu ayuda y tu tiempo!
  #15 (permalink)  
Antiguo 28/11/2010, 15:00
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Ahora comprendí, el mail se va a enviar igual ya que la linea
Código PHP:
        mail($emailusuario"Recuperacion de Contraseña""Tu contraseña nueva es $better_token"$cabeceras); 
esta $emailusuario eso deberia reemplazarlo por el valor que se encuentre en la columna de la base de datos no?


Gracias
  #16 (permalink)  
Antiguo 28/11/2010, 15:58
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Script php para recuperar contraseña MD5

Si, $emailusuario es el destinatario del mensaje

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #17 (permalink)  
Antiguo 28/11/2010, 16:08
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Quité $emailusuario y agregue para que "tome" el mail de la base de datos aparte de sumar otros seteos para que el mail llegue correctamente.-

Código PHP:
$res mysql_query("UPDATE members SET passwd = '".md5($better_token)."' WHERE login='$nombreusuario'");

// Query que busca el mail
$res1=mysql_query("SELECT * FROM members WHERE login='$nombreusuario'");  
$row=mysql_fetch_assoc($res1);  
$emailbd=$row['email'];


// Email
$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
$cabeceras .= 'From: X <[email protected]>' "\r\n";

    if(
$res) {
        
mail($emailbd"Recuperacion de Contraseña""Tu contraseña nueva es $better_token"$cabeceras); 

Gracias por la paciencia y el tiempo que se tomaron en leer y responder!

Última edición por PxHx; 28/11/2010 a las 16:08 Razón: modifique el codigo
  #18 (permalink)  
Antiguo 28/11/2010, 16:42
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Script php para recuperar contraseña MD5

Si, asi esta bien ;)
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #19 (permalink)  
Antiguo 29/11/2010, 18:31
 
Fecha de Ingreso: noviembre-2010
Ubicación: Capital Federal, Buenos Aires
Mensajes: 60
Antigüedad: 14 años
Puntos: 0
Respuesta: Script php para recuperar contraseña MD5

Consulta, estoy tratando de armar la parte de errores, el formulario viene desde un html, este es el codigo php completo

Código PHP:
$nombreusuario=$_POST['nombreusuario'];   


require_once 
"bdconfigmail.php";  
$con mysql_connect($dbhost$dbusername$dbpass);
if(!
$con) {
    die(
'Fallo la conexion al servidor' mysql_error());
}

$db mysql_select_db($dbname);  
if(!
$db) {
    die(
"No encontramos la base de datos");
}

$res=mysql_query("SELECT COUNT(*) FROM members WHERE login='$nombreusuario'"); 

if (
mysql_num_rows($res)==0) {  
header("Location:error.html");  
}

else {  
    
$better_token md5(uniqid(mt_rand(), true));
    
$better_token substr($better_token06);


$res mysql_query("UPDATE members SET passwd = '".md5($better_token)."' WHERE login='$nombreusuario'");



$res1=mysql_query("SELECT * FROM members WHERE login='$nombreusuario'");  
$row=mysql_fetch_assoc($res1);  
$emailbd=$row['email'];


$cabeceras  'MIME-Version: 1.0' "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
$cabeceras .= 'From: Cosme <[email protected]>' "\r\n";


    if(
$res) {
        
mail($emailbd"Recuperacion de Contraseña""Su contraseña nueva es: <strong>$better_token</strong><br><br><br>Recuerde que la contraseña enviada puede ser modificada desde el panel de control."$cabeceras);
    }

Supuestamente si no encuentra el dato redirecciona al archivo error.html, pero no funciona y no encuentro el error.-

¿Alguna sugerencia?

Gracias y perdon por las molestias

Última edición por PxHx; 02/02/2011 a las 10:07 Razón: Cosme
  #20 (permalink)  
Antiguo 03/09/2011, 10:11
 
Fecha de Ingreso: septiembre-2011
Ubicación: guadalajara
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Script php para recuperar contraseña MD5

QUE SE SUPONE QUE HAY DENTRO DE ESTE ARCHIVO Y COMO LO CREO ?

include "bdconfigmail.php";

Etiquetas: contraseña, recuperar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:25.