Foros del Web » Programando para Internet » PHP »

recuperar contraseña olvidada (ayuda)

Estas en el tema de recuperar contraseña olvidada (ayuda) en el foro de PHP en Foros del Web. Haber estoy buscando como hacer que puedan los usuarios recuperar su contraseña. Buscando por google encontre un codigo y lo adapte a lo mio ahora ...
  #1 (permalink)  
Antiguo 07/05/2009, 09:12
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Pregunta recuperar contraseña olvidada (ayuda)

Haber estoy buscando como hacer que puedan los usuarios recuperar su contraseña. Buscando por google encontre un codigo y lo adapte a lo mio ahora el problema es que manda la contraseña al email pero la manda codificada.
¿Que puedo hacer?.

El codigo es este:

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 
$email=$_POST['email']; 

// Conectamos a la base de datos 
// Las variables de conexion se suelen poner en un fichero de configuracion que se incluye 
include("../../reg/config.php"); 

// Consultamos si existe $nombreusuario + $emailusuario 
$res=mysql_query("SELECT COUNT(*) FROM usu WHERE  email='$email'"); 

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 { 
// Si existe, buscamos en la bd 
$res=mysql_query("SELECT * FROM usu WHERE email='$email'"); 
$row=mysql_fetch_assoc($res); 
$claveusuario=$row['password']; 

// enviamos el email de recuperacion 
$headers "MIME-Version: 1.0\r\n"
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"
mail($email"Recuperación""Sus datos en nuestra web son: $email, $claveusuario"$headers); 

?>

Última edición por rompeguesos; 07/05/2009 a las 09:25
  #2 (permalink)  
Antiguo 07/05/2009, 09:33
 
Fecha de Ingreso: febrero-2009
Ubicación: cancun!
Mensajes: 898
Antigüedad: 15 años, 2 meses
Puntos: 15
Respuesta: recuperar contraseña olvidada (ayuda)

Cita:
$claveusuario=$row['password'];
am la tienes q desencriptar antes de mandarla para q ael le llegue la "original" npor asi decirle

saludines!
__________________
WHERE IS MY BLUE SUNNY SKY??
pd: todos los karmas son bienvenidos :D
  #3 (permalink)  
Antiguo 07/05/2009, 09:37
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: recuperar contraseña olvidada (ayuda)

haber.. no se como hacerlo, yo tengo el sistema de usuarios en el cual al registrarse el usuario la codifico con md5 y ahora esto trata de un formulario en el que solo tiene que poner el email y hace la comprobacion de si existe o no en la base de datos y si existe se le envia el email con sus datos. ¿Algun modo de hacerlo?
  #4 (permalink)  
Antiguo 07/05/2009, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: recuperar contraseña olvidada (ayuda)

No puedes desencriptar una contrasenia que pasaste por MD5, ya que MD5 es un algoritmo de hasheo no de encriptacion.

Vas a tener que generar una contrasenia nueva y enviarla por el mail e insertar esa contrasenia nueva.

Saludos.
  #5 (permalink)  
Antiguo 07/05/2009, 09:47
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: recuperar contraseña olvidada (ayuda)

bien generar una nueva contraseña trataria de la siguiente forma, compruebo que el email insertado existe, si existe se genera una nueva contraseña, se actualiza en la base de datos y se envia al email no?
Si es asi.. como se aria?
  #6 (permalink)  
Antiguo 07/05/2009, 09:57
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: recuperar contraseña olvidada (ayuda)

yo lo haria mas automatico... simplemente un link al usuario (en el formulario que este) para que solicite una nueva contraseña en caso lo pierda. Esta solicitud puede ir al administrador para que lo genere o simplemente el link arranca el script para generar una contraseña y se lo manda a su correo a la vez que se actualiza en la base de datos. Depende que politica le pongas a tu web
__________________
Quitenme la vida pero no la bebida.
  #7 (permalink)  
Antiguo 07/05/2009, 10:06
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: recuperar contraseña olvidada (ayuda)

vale haber... los pasos serian asi?
en un formulario solicito que ponga su email, compruebo que existe y le envio un link hacia una pagina que yo ya tenga creada con un formulario para que confirme su email y una vez confirme su email y pinche en el boton "enviar" por ejemplo, se genere una contraseña aleatoria y dicha contraseña sea enviada al email y actualizada en la base de datos.

asi te refieres?
  #8 (permalink)  
Antiguo 07/05/2009, 10:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: recuperar contraseña olvidada (ayuda)

Exacto, de hecho ya hay un aporte en el foro de un usuario para hacer algo similar, te recomendaria que buscaras.

Saludos.
  #9 (permalink)  
Antiguo 07/05/2009, 10:12
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
si si ya busque en lo de los aportes y todo el tema pero el que hay no me gusta porque tan solo con indicar el email ya te permite cambiar la contraseña y eso no me gusta ya que cualquier usuario con tan solo saber el email de alguien podria cambiarla porque no tenia confirmacion por email ni nada.

me ha surgido una duda... como puedo generar un codigo aleatorio?

Amigos ya la he encontrado con esta funcion:

Código PHP:
function generar_id($length)
{
    
$str "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
    for(
$i=0;$i<$length;$i++) 
        
$key .= $str[mt_rand(0,strlen($str)-1)];
    
    return 
$key;


$random generar_id(15); 
Como hago para que se actualice el valor de lo que genere con el valor de la base de datos?

Última edición por GatorV; 07/05/2009 a las 10:58
  #10 (permalink)  
Antiguo 07/05/2009, 10:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: recuperar contraseña olvidada (ayuda)

Pues yo me fijaria y estudiaria el aporte y lo adaptaria a mis necesidades en este caso lo que necesitas.

Por otro lado ya que generas ese id aleatorio simplemente haces un INSERT() o un UPDATE().

Saludos.
  #11 (permalink)  
Antiguo 07/05/2009, 12:29
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: recuperar contraseña olvidada (ayuda)

Bueno ya he hecho algo pero me gustaria que lo revisaran ya que ando algo perdido. ¿Esta bien esto asi?

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 
$email=$_POST['email']; 

// Conectamos a la base de datos 
// Las variables de conexion se suelen poner en un fichero de configuracion que se incluye 
include("../../reg/config.php"); 

// Consultamos si existe $nombreusuario + $emailusuario 
$res=mysql_query("SELECT email FROM usu WHERE  email='$email'"); 

if (
mysql_num_rows($res)==0) { 
// Si no existe, datos incorrectos y fin del proceso y volvemos al formulario de recuperacion 
echo "Email no existe en la base de datos."

else { 
// Si existe, buscamos en la bd 
$res=mysql_query("SELECT email,password FROM usu WHERE email='$email',password='$random'"); 
$row=mysql_fetch_assoc($res);

//Generar contraseña aleatoria
function generar_id($length)
{
    
$str "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
    for(
$i=0;$i<$length;$i++) 
        
$key .= $str[mt_rand(0,strlen($str)-1)];
    
    return 
$key;


$random generar_id(15);

// enviamos el email de recuperacion 
$headers "MIME-Version: 1.0\r\n"
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"
mail($email"Recuperación""Sus datos en nuestra web son: $email, $random, www.coriaweb.es"$headers); 

$random=md5($random);

$query "UPDATE usu 
            SET password = '$random' WHERE email ='$email' " 

                
mysql_query($query) or die(mysql_error());         


?>
  #12 (permalink)  
Antiguo 07/05/2009, 13:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: recuperar contraseña olvidada (ayuda)

Pues si se ve correcto, te da algun problema?

Saludos.
  #13 (permalink)  
Antiguo 07/05/2009, 13:50
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: recuperar contraseña olvidada (ayuda)

jejeje ya no este tema ya lo solucioné ;). Gracias.
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:35.