Foros del Web » Programando para Internet » PHP »

Link recuperar contrtaseña?

Estas en el tema de Link recuperar contrtaseña? en el foro de PHP en Foros del Web. Hola bueno como dice el titulo , necesito algun ejemplo o codigo de como recuperar la contraseña de un usuario olvidadiso. Por lo que andube ...
  #1 (permalink)  
Antiguo 23/03/2008, 11:36
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Link recuperar contrtaseña?

Hola bueno como dice el titulo , necesito algun ejemplo o codigo de como recuperar la contraseña de un usuario olvidadiso.
Por lo que andube leyendo es mejor crear una nueva contraseña y enviarsela por la funcion mail.

Pro claro solo entendi eso , no se me ocurre como hacerla con codigo.

Alguna ayuda?

He encontrado esto , pero claro la pass estanen Md5

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 "mysql.inc";
$con mysql_connect($dbhost$dbusername$dbpass);
mysql_select_db($dbname);

// Consultamos si existe $nombreusuario + $emailusuario
$res=mysql_query("SELECT COUNT(*) FROM usuarios WHERE nombreusuario='$nombreusuario' AND emailusuario='$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 {
// Si existe, buscamos en la bd
$res=mysql_query("SELECT * FROM usuarios WHERE nombreusuario='$nombreusuario' AND emailusuario='$emailusuario'");
$row=mysql_fetch_assoc($res);
$claveusuario=$row['claveusuario'];

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



Salu2

Última edición por EmaD; 23/03/2008 a las 11:44
  #2 (permalink)  
Antiguo 23/03/2008, 11:57
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Link recuperar contrtaseña?

el codigo parece bueno, si no lo has provado, no sabras si te da error.

y en cuanto a md5, no se si estoy en lo cierto pero creo que hay alguna manera de hacer lo contrario de md5 y devolver la contraseña normal.

Un saludo.
  #3 (permalink)  
Antiguo 23/03/2008, 12:03
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Link recuperar contrtaseña?

mm Es que por lo que lei es imposible ya que MD5 es irreversible mediante php , hay metodos para crackear por fuerza bruta , claro , pero desde php no encontre.

Ese es el inconveniente, el codigo ese marcha bien , pero envia la pass en MD5 .

Mm se me ocurre un afuncion para generar una pass aleatoria > grabarla en el campo password del usuario > y enviarsela con un aviso que la cambie ala que el quiere.

es decir tendria que hacerle un update a el campo passwrod con la password aleatoria asignada.

Claro que se me complic ala idea esta , mi nivel de php es pobre y principiante , vere si puedo con eso.

Salu2
  #4 (permalink)  
Antiguo 23/03/2008, 12:38
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Re: Link recuperar contrtaseña?

Hola

1- haz un form donde el user ponga su email o su nick o los dos
2- haz la consulta a la BD donde coincida el email o nick o los dos
3- si coinciden lo envias a una pagina con un formulario donde introduzca una contraseña nueva
4-haces un UPDATE a la BD con la nueva contraseña elegida por el user.

no es mas dificil que registrar a un usuario,

Un saludo
  #5 (permalink)  
Antiguo 23/03/2008, 12:46
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Link recuperar contrtaseña?

Te paso el que yo uso

Esta compuesta por dos funciones, una casi el 99% HTML menos una parte donde te muestra el error

Código PHP:
function pass_tabla($b="")
{
    ?>
</body>
<center>
<form method=post action=recuperar_pass.php>
<table border="2" bordercolor=yellow bgcolor=orange width=65% height=25%>
<td><table>
<tr><td>La nueva contraseña sera mandada por e-mail a la casilla de correo.<br><br>El nombre de usuario debe de coincidir con el e-mail para que funcione.<br><br>De caso contrario se hara imposible recibir la nueva contraseña.<br><br><hr> </td>
<tr><td>Escribi el nombre de tu user</td>
<tr><td><input tipe=text name=user></td>
<tr><td>Escribi tu e-mail</td>
<tr><td><input tipe=text name=email></td>
<tr><td><?$b?></td>
<tr><td><input type=submit value=recuperar </tr></td></td>
</table>
</table>
</center>
</html>    
<?    
}
Y la PHP donde se cambia el pass


Código PHP:
function enviar_pass($user,$email)
{
    if (
$user && $email)
 {

    
$pass=array("pass1","pass2","pass3")

//en pass ponemos las palabra que queremos que sorteen


shuffle($pass)             ;

$numero=rand(100,1000)    ;
//adema le decimos que sortee un numero entre 100 y 100 para que el pass se mas seguro 

$nuevo_pass=$pass.$numero;
  
$db=db_connect();
  
$result mysql_query("update user
                          set pass = '$nuevo_pass'
                          where user = '$user'"
);



      
$result mysql_query ("select * from user where  user='$user' and email='$email'");
       if (
mysql_num_rows($result) ==)
        {

      
$from "[email protected] \r\n";
      
$mesg "Tu contraseña de Tenisok ha sido cambiado a $nuevo_pass \r\n"
              
."Por favor utilízalo la próxima ver que hagas log in. \r\n";
      if (
mail($email"Nueva contraseña"$mesg$from))
        return 
true;
      else
        return 
false;

 echo 
"La nueva contraseña fue mandada a tu correo electronico";
 }

 elseif(
mysql_num_rows($result) ==0)
 {
 echo 
"Los datos ingresados no concuerdan o no son validos";
 }
 }
    





Es la mas facil que conosco chau, espero que les sirva
  #6 (permalink)  
Antiguo 23/03/2008, 12:54
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Link recuperar contrtaseña?

Gracias lo estare probando y le scomento .

Salu2
  #7 (permalink)  
Antiguo 24/03/2008, 20:54
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Link recuperar contrtaseña?

Les dejo por si alguien lo necesita , comprueba si existe el usuario sino da error , si existe genera un password aleatorio de 8 digitos , actualiza el campo password del usuario y envia unmail con los 2 datos.

mmm Tengo el problema que no me comprueba si exist eo no el usuario con el correo.

Alguna ayuda?

Código PHP:
<?
$dbhost
="localhost";
$dbuser="************";
$dbpass="************";
$db="*********";
 
$logitud 8;
$nuevo_pass substrmd5(microtime()), 1$logitud);
 
     
// 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['user'];
$emailusuario=$_POST['email'];

// Conectamos a la base de datos
// Las variables de conexion se suelen poner en un fichero de configuracion que se incluye
$con mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db($db);

// Consultamos si existe $nombreusuario + $emailusuario
$res=mysql_query("SELECT COUNT(*) FROM paws_users WHERE pseudo='".$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");
echo "No existe el usuario o email";
}
else {
// Si existe, buscamos en la bd
mysql_query("update paws_users
                          set pass_crypt = '"
.md5($nuevo_pass)."'
                          where pseudo = '"
.$nombreusuario."' AND email='".$emailusuario."'");
echo 
"Se a enviado un correo con sus datos. Asegurese de cambiar su contraseña la proxima vez que ingrese";

// enviamos el email de recuperacion
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
//dirección del remitente
$headers .= 'From: Clave Radiometal <[email protected]>' "\r\n";
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: [email protected]\r\n";
mail($emailusuario"Recuperación Clave Radiometal""Sus datos en nuestra web son <br> Usuario:$nombreusuario, Password:$nuevo_pass <br>Puede cambiar su contraseña desde su perfil"$headers);
}

?>


el error esta aca


if (@mysql_num_rows($res)==0) {

no me comprueba si son correctos los datos siempre me muestra

Se a enviado un correo con sus datos. Asegurese de cambiar su contraseña la proxima vez que ingrese

Salu2 Gracias por la ayuda.

Última edición por EmaD; 24/03/2008 a las 21:27
  #8 (permalink)  
Antiguo 25/03/2008, 01:16
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Re: Link recuperar contrtaseña?

Código PHP:
$res=mysql_query("SELECT * FROM paws_users WHERE pseudo='".$nombreusuario."' AND email='".$emailusuario."'");

if (
mysql_num_rows($res)>0) {
  
// que se hace si existe el user
}else{
 
// que se hace sino existe el user

haber intentalo...
__________________
Hospedaje Web al mejor costo!
  #9 (permalink)  
Antiguo 25/03/2008, 02:50
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Link recuperar contrtaseña?

Ya lo habia probado asi y tampoco no hay caso.

>Alguna otra forma?

Probe asi y tampoco

Código PHP:
$res=mysql_query("SELECT COUNT(*) FROM paws_users where pseudo = '".$nombreusuario."' AND email='".$emailusuario."'"$con);
$cant=mysql_affected_rows($con);

if (
$cant>0){

//si existe

}else{
 
// no existe

Salu2
  #10 (permalink)  
Antiguo 25/03/2008, 02:52
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Re: Link recuperar contrtaseña?

ponle el or die(mysql_error()) a tus sentencias y dime ke te imprime, por favor.
__________________
Hospedaje Web al mejor costo!
  #11 (permalink)  
Antiguo 25/03/2008, 03:10
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Re: Link recuperar contrtaseña?

Cita:
Iniciado por jaronu Ver Mensaje
el codigo parece bueno, si no lo has provado, no sabras si te da error.

y en cuanto a md5, no se si estoy en lo cierto pero creo que hay alguna manera de hacer lo contrario de md5 y devolver la contraseña normal.

Un saludo.
Perdon por el offtopic pero cabe aclarar que el md5 NO es descifrable. Hay metodos de fuerza bruta como bien dijieron, y tambien hay bases de datos en constante crecimiento que tienen almacenados millones de hash con sus respectivos significados.
  #12 (permalink)  
Antiguo 25/03/2008, 11:16
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Link recuperar contrtaseña?

Si eso lo sabia en milw0rm.com tienen un ejemplo de crackers por comparacion de md5 con su s bases de datos.

COn respecto al error de mi script alguien pudo ver algo?

Vengo de la universidad y estoy muerto .

Salu2
  #13 (permalink)  
Antiguo 25/03/2008, 11:29
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: Link recuperar contrtaseña?

si quieres yo tengo un changepass si te interesa , ademas para recuperar un pass usa la facil creea 2 campos uno q sea pass y el otro pass con md5 y creeo q sales del problema eso lo hacen la mayoria de sitios web probalo asi
  #14 (permalink)  
Antiguo 25/03/2008, 18:42
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Link recuperar contrtaseña?

Oye es que lo unico que me falta del script es comprobar si el mail corresponde o no al usuario ingresado , nadie sabe como controlar si 2 campos ingresados de un formulario son iguales a 2 campos de una bd?

Sino lo tendre que hacer con uno solo por ejemplo el campo email y listo pero me parece mas seguro de esa manera con los 2 .

Gracias
  #15 (permalink)  
Antiguo 25/03/2008, 19:16
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Re: Link recuperar contrtaseña?

Puedo preguntar para que es esto??

Cita:
COUNT(*)
Me refiero a, para que lo usas, en ese script no parece tener sentido. (No lo lei, lei un par de lineas porque la verdad que yo tambien estoy muy cansado)
  #16 (permalink)  
Antiguo 25/03/2008, 20:01
Avatar de EmaD  
Fecha de Ingreso: marzo-2008
Mensajes: 93
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Link recuperar contrtaseña?

Listo ahor asi pude lograrlo , el error se daba porque por lo que averigue , la funcion

Código PHP:
mysql_affected_rows(); 
no cuenta registros de la db , pero si la funcion

Código PHP:
mysql_num_rows(); 
y quedo de esta manera

Código PHP:
$cant=mysql_num_rows($res); 
Les dejo el codigo completo funcionando , le faltan cosas pero se puede ir modificando de apoco.

Código PHP:
<?php 
$dbhost
="*******";
$dbuser="*******";
$dbpass="********";
$db="***********";
 
//conectamos a la db
$con mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db($db,$con);
 
 
//generar password Aleatoreo 8 digitos
$logitud 8;
$nuevo_pass substrmd5(microtime()), 1$logitud);
 
  
// recogemos las variables enviadas por el formulario

$nombreusuario=$_POST['user'];
$emailusuario=$_POST['email'];

// Consultamos si existe $nombreusuario + $emailusuario
$resmysql_query("SELECT * FROM paws_users WHERE pseudo='".$nombreusuario."' AND email='".$emailusuario."'")or die(mysql_error()) ; 

$cant=mysql_num_rows($res);
//si cantidad da mayor de 0 existe y enviamos el mail
if ($cant>0){

mysql_query("update paws_users
                          set pass_crypt = '"
.md5($nuevo_pass)."'
                          where pseudo = '"
.$nombreusuario."' AND email='".$emailusuario."'") or die(mysql_error()) ;
                          echo 
"<html><body bgcolor='#000000' text='#FFFFFF'><center>";
echo 
"Se a enviado un correo con sus datos. Asegurese de cambiar su contraseña la proxima vez que ingrese";

// enviamos el email de recuperacion
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' "\r\n";
//dirección del remitente
$headers .= 'From: Clave Radiometal <[email protected]>' "\r\n";
//dirección de respuesta, si queremos que sea distinta que la del remitente
$headers .= "Reply-To: [email protected]\r\n";
mail($emailusuario"Recuperación Clave Radiometal""Sus datos en nuestra web son <br> Usuario:$nombreusuario, Password:$nuevo_pass <br>Puede cambiar su contraseña desde su perfil"$headers);
}
else {
//sino existe mostramos error
echo "<html><body bgcolor='#000000' text='#FFFFFF'><center>";
echo 
"No existe el usuario o email<br>";
echo 
"<a href='javascript:history.back();'>volver</a>";

}

?>

Llega esto.

Cita:
Sus datos en nuestra web son
Usuario:Pepito, Password:e668ba34
Puede cambiar su contraseña desde su perfil


Salu2
  #17 (permalink)  
Antiguo 25/03/2008, 23:20
Avatar de ivor  
Fecha de Ingreso: abril-2005
Ubicación: Venezuela
Mensajes: 673
Antigüedad: 19 años
Puntos: 2
Re: Link recuperar contrtaseña?

Excelente el aporte
__________________
Twitter: ipad
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

SíEste tema le ha gustado a 1 personas




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