Foros del Web » Programando para Internet » PHP »

¿Como recuperar clave de usuarios?

Estas en el tema de ¿Como recuperar clave de usuarios? en el foro de PHP en Foros del Web. Amigos; Como hago para que mis usuarios recuperen sus claves registradas en una bd con anterioridad? Tengo el siguiente código: <? // get posted data ...
  #1 (permalink)  
Antiguo 27/02/2008, 15:22
(Desactivado)
 
Fecha de Ingreso: febrero-2008
Mensajes: 83
Antigüedad: 16 años, 1 mes
Puntos: 0
¿Como recuperar clave de usuarios?

Amigos;

Como hago para que mis usuarios recuperen sus claves registradas en una bd con anterioridad?

Tengo el siguiente código:


<?

// get posted data into local variables
$EmailFrom = "";
$EmailTo = $_POST['email'];
$Subject = "Recuperación de Contraseña del Registro de ususraios";
$email = Trim(stripslashes($_POST['email']));

// validation
$validationOK=true;
if (!$validationOK) {
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
exit;
}

// hacemos una conexion a la bd
$conexion = mysql_connect("localhost","usuario","clave","bd"," tabla");

// seleccionamos la Bd
mysql_select_db ("cbd", $conexion);

//realizamos una consulta a la bd
$query = mysql_query("SELECT * FROM registro WHERE email='$email' and contrasena='$contrasena'", $conexion);

//definimos un array
$array = mysql_fetch_array($query);

//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayemail = $email;
$arraycontrasena = $_GET["contrasena"];

//vemos si el usuario y contraseña es váildo
//llamamos los arrays en las siguiente linea.
if ($_POST["email"]=="$arrayemail")


// prepare email body text
$Body = "";
$Body .= "La contraseña registrada en nuestra base de datos para este email es:";
$Body .= "\n";
$Body .= "email: ";
$Body .= $arrayemail;
$Body .= "\n";
$Body .= "contraseña: ";
$Body .= $arraycontrasena;
$Body .= "\n";
$Body .= "Este mensaje fue enviado automáticamente, rogamos no responder este correo:";

// send email
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
if ($success){
print "<meta http-equiv=\"refresh\" content=\"0;URL=ok.htm\">";
}
else{
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">";
}
?>


Me llega el mail pero los campos de email: me aparece el post puesto aqui, y en el campo de contraseña me llega vacío, esto quiere decir que no le está preguntando a la base de datos, como hago para que le pregunte y la ejecute?
  #2 (permalink)  
Antiguo 27/02/2008, 15:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: ¿Como recuperar clave de usuarios?

Cambia estos datos:
Código PHP:
//realizamos una consulta a la bd
$query mysql_query("SELECT * FROM registro WHERE email='$email' and contrasena='$contrasena'"$conexion);

//definimos un array
$array mysql_fetch_array($query);

//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayemail $array['emai'];
$arraycontrasena $array["contrasena"];

//vemos si el usuario y contraseña es váildo
//llamamos los arrays en las siguiente linea.
if ($_POST["email"]==$arrayemail
Saludos.
  #3 (permalink)  
Antiguo 27/02/2008, 15:35
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: ¿Como recuperar clave de usuarios?

Holas jmarquezrave

Viendo esta parte de tu código:
Código PHP:
//realizamos una consulta a la bd
$query mysql_query("SELECT * FROM registro WHERE email='$email' and contrasena='$contrasena'"$conexion); 
...¿No deberías preguntar lo siguiente en vez de lo anterior?:
Código PHP:
//realizamos una consulta a la bd
$query mysql_query("SELECT * FROM registro WHERE email='$email' and usuario='$usuario'"$conexion); 
Porque si quieres recuperar la clave de un usuario, no es la clave la condicion (no la tienes, por algo haces todo esto), sino el usuario O_o

Ahora, después en el código, guardas el resultado de la consulta en $array, pero luego nunca lo usas O_O :
Código PHP:
//definimos un array
$array mysql_fetch_array($query);

//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayemail $email;
$arraycontrasena $_GET["contrasena"]; 
Siguiendo con los cambios, esto debiera quedar algo como:
Código PHP:
//definimos un array
$array mysql_fetch_array($query);

//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayemail $array["email"];
$arraycontrasena $array["contrasena"]; 
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #4 (permalink)  
Antiguo 27/02/2008, 16:33
(Desactivado)
 
Fecha de Ingreso: febrero-2008
Mensajes: 83
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: ¿Como recuperar clave de usuarios?

Gracias Quinqui pero no tengo niguna registro asignado a usuario, lo que quiero hacer es ponerlo como email, ya que quiero que me recupere el email y la contraseña.
El nombre de usuario que quiero que utilicen es el de su email
  #5 (permalink)  
Antiguo 29/02/2008, 08:08
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: ¿Como recuperar clave de usuarios?

Sí, pensé eso luego de estudiar un poquito más tu código... pero aún así, si lo que quieres es recuperar la contraseña de la persona, igual tienes que tener un valor para preguntar, en este caso, el email de la persona:

Mira, comparemos las consultas para que veas a lo que me refiero:

--Esta es la consulta original, dada por ti:
Código PHP:
//realizamos una consulta a la bd
$query mysql_query("
SELECT * FROM registro WHERE email='$email' and contrasena='$contrasena'"
$conexion); 
Aquí tú estás preguntando a la base de datos "Busca en la tabla 'registro' todos los datos de quien tenga el email '$email' y la contraseña '$contrasena'". Si se supone que tú quieres obtener la contraseña, esta consulta no tiene sentido, pues tú la estás poniendo como condición de la búsqueda. Aparte, si la persona con el email '$email' no tiene la contraseña "vacía", esta consulta siempre dará resultado "No hay coincidencias".

--Esta es la consulta que te propongo:
Código PHP:
//realizamos una consulta a la bd
$query mysql_query("SELECT contrasena FROM registro WHERE email='$email' "$conexion); 
Aquí tú estás explícitamente diciéndole a la base de datos "Busca en la tabla registro la contraseña de quien tenga el email = '$email' ".
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #6 (permalink)  
Antiguo 29/02/2008, 11:02
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: ¿Como recuperar clave de usuarios?

las contraseñas no se deberian recuperar por cuestiones de seguridad se deberian remplazar por nuevas o tener 2 campos en tu bd una con el pass codificado (md5 , sha1 )y el otro con el pass normalito
  #7 (permalink)  
Antiguo 29/02/2008, 12:06
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: ¿Como recuperar clave de usuarios?

Cita:
Iniciado por talcual Ver Mensaje
las contraseñas no se deberian recuperar por cuestiones de seguridad se deberian remplazar por nuevas o tener 2 campos en tu bd una con el pass codificado (md5 , sha1 )y el otro con el pass normalito
Si hablamos de seguridad, no tiene sentido almacenar de ambas formas una contraseña. El uso de métodos de encriptación como md5() es para justamente evitar que un atacante conozca la contraseña real. Si la guardamos también en la base de datos así tal y como es... ¿Con qué fin?

Tienes razón en lo de evitar en lo posible la recuperación de las contraseñas, sino más bien se debe dar al usuario la oportunidad de cambiarla en caso de olvido. Una contraseña segura sería aquella que bajo ningún método, una vez encriptada, pueda ser desencriptada.

Saludos,
  #8 (permalink)  
Antiguo 02/03/2008, 17:19
(Desactivado)
 
Fecha de Ingreso: febrero-2008
Mensajes: 83
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: ¿Como recuperar clave de usuarios?

Gracias Quinqui, pero sigue sin funcionarme, me llega al email el campo vacio
  #9 (permalink)  
Antiguo 02/03/2008, 17:19
(Desactivado)
 
Fecha de Ingreso: febrero-2008
Mensajes: 83
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: ¿Como recuperar clave de usuarios?

Tienes mucha razon okram, pero como hago para utilizar md5() para encriptar claves?
  #10 (permalink)  
Antiguo 02/03/2008, 19:40
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: ¿Como recuperar clave de usuarios?

http://www.php.net/md5

Haber, básicamente debes hacer esto:

- Pedirle al usuario ciertos datos, digamos su nombre de usuario y su email.
- Buscas en la base de datos la coincidencia (debe ser una sola obviamente), generas un código aleatorio, lo guardas en la bd y envias un mail (mail()) indicandole una url del tipo recupera.php?codigo=[el_codigo]
- En recupera.php buscas en la base de datos la fila que tenga ese código asignado, y le das la oportunidad de cambiar su contraseña.

Saludos,
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 02:11.