Foros del Web » Programando para Internet » PHP »

Contraseña aleatoria, error al hacer login.

Estas en el tema de Contraseña aleatoria, error al hacer login. en el foro de PHP en Foros del Web. Buenas a todos. Llevo un par de horas dandole vueltas y buscando por la red pero no doy con mi problema... Les comento un poco, ...
  #1 (permalink)  
Antiguo 13/06/2013, 16:16
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Contraseña aleatoria, error al hacer login.

Buenas a todos.
Llevo un par de horas dandole vueltas y buscando por la red pero no doy con mi problema...

Les comento un poco, una web con registro de usuarios y una opcion para recuperar la contraseña si la has olvidados.

Al hacer login, la contraseña se trata asi:
Código PHP:
//Establecemos variables de login
$user=$_POST['usuario'];
$clave=$_POST['password'];
$pass=md5($clave);
//Comprobamos que el usuario existe
.
.
.
//Comprobamos que $user + $pass son correctos
    
$pas"SELECT * FROM Usuarios WHERE Usuario ='$user' AND Password= '$pass'";
    
$pasres=mysql_query($pas$conectar); 
Y el codigo para recuperar la contraseña:
Código PHP:
$num_caracteres "10"// asignamos el número de caracteres que va a tener la nueva contraseña
    
$nueva_clave substr(md5(rand(),0,$num_caracteres)); // generamos una nueva contraseña de forma aleatoria
    
$usuario_clave $nueva_clave// la nueva contraseña que se enviará por correo al usuario
    
$pass md5($usuario_clave); // encriptamos la nueva contraseña para guardarla en la BD
    
$camb"UPDATE Usuarios
            SET Password = '$pass'
            WHERE Email = '$email'"

Y la mando por email al usuario.
Bien.
En la base de datos la contraseña se cambia y se encripta.
Pero al hacer login la contraseña es incorrecta.

Quizas estoy pasando por alto lo mas obvio y esencial, pero no doy con el error.

Gracias por la ayuda, si necesitais algun dato mas, pedidmelo!!
  #2 (permalink)  
Antiguo 13/06/2013, 16:36
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Contraseña aleatoria, error al hacer login.

Debes almacenar:
Cita:
md5($clave)
y luego comparas haciendo de nuevo un
Cita:
md5($clave_ingresada)
y haces eso debe funcionarte......
__________________
Salu2!

Última edición por Italico76; 13/06/2013 a las 16:45
  #3 (permalink)  
Antiguo 13/06/2013, 16:47
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Contraseña aleatoria, error al hacer login.

No entiendo que quieres decir.
No he puesto el codigo del registro del usuario.
Pero si, cuando se registran la clave se almacena codificada con md5.

Y cuando hacen login se codifica para comparar que es igual.

Donde esta lo raro??
  #4 (permalink)  
Antiguo 13/06/2013, 16:59
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Contraseña aleatoria, error al hacer login.

Ya entiendo lo que quieres decir, y es justo lo que hago.
Para que se entienda, lo que hago es codificar tanto al crear el usuario, como al hacer login para comparar y al generar aleatoriamente la contraseña.

Registro.php
Código PHP:
$clave=$_POST['pass'];
$password=md5($clave
Login.php
Código PHP:
$clave=$_POST['password'];
$pass=md5($clave); 
Recuperar contraseña.php
Código PHP:
$num_caracteres "10"// asignamos el número de caracteres que va a tener la nueva contraseña
    
$nueva_clave substr(md5(rand(),0,$num_caracteres)); // generamos una nueva contraseña de forma aleatoria
    
$usuario_clave $nueva_clave// la nueva contraseña que se enviará por correo al usuario
    
$pass md5($usuario_clave); // encriptamos la nueva contraseña para guardarla en la BD
    
$camb"UPDATE Usuarios
            SET Password = '$pass'
            WHERE Email = '$email'"

Pero la contraseña aleatoria NO funciona al intentar hacer login.

Si me funciona si un usuario se registra y hace login, eso si, todo normal.
Pero si vas a recuperar la contraseña la que se genera y se codifica no funciona.
  #5 (permalink)  
Antiguo 13/06/2013, 21:37
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Contraseña aleatoria, error al hacer login.

Al cliente le muestras la contraseña generada (aleatoria) que fue pasada por md5() y cuando él la ingresa la pasas NUEVAMENTE por md5() y lo comparas con el valor ALMACENADO SIN MD5

aleatoria (1) --> a la DB
aleatoria --> md5 (2)--> al usuario

(aleatoria con md5)(2) --> md5(1) == aleatoria (almacenada sin md5)(1)


O sea, al comparar debes haber pasado DOS VECES por md5()
--------

OTRA FORMA:

aleatoria --> md5 --> a la DB (1)
usuario ingresa clave (sin MD5) --> md5() --> y comparo con (1)
__________________
Salu2!

Última edición por Italico76; 13/06/2013 a las 21:46
  #6 (permalink)  
Antiguo 14/06/2013, 02:29
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Contraseña aleatoria, error al hacer login.

No te sigo...
Quizas estoy algo lento ya que me acabo de levantar...

Cuando genero la contraseña aleatoria, la guardo en la BD con md5, pero al usuario se la envio sin codificar.

Clave = 123456
Codificada = md5(Clave) ->a la BD
Email para el usuario: Tu clave es $Clave

Y al hacer login:

Password=$_POST['contraseña']
Pass= md5(Password) ->Comparo Pass con el campo de la BD

Eso es como lo ultimo que tu has puesto no?
Porque asi no funciona...

Creo que sigo dormido...
  #7 (permalink)  
Antiguo 14/06/2013, 09:28
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Contraseña aleatoria, error al hacer login.

Lo que explicas esta bien.......... no me voy a poner a seguir el codigo completo (perdon) pero la logica es que o bien comparas md5(pass)==md5(pass) o lo haces pass == md5(md5(pass)) ya que es lo mismo que 'pass' porque el md5(md5(algo))=algo
__________________
Salu2!
  #8 (permalink)  
Antiguo 14/06/2013, 11:16
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Contraseña aleatoria, error al hacer login.

Vale.
Te entiendo. A estas horas ya voy entendiendo mas.
Pero el problema no esta ahi.
El problema es que si soy un usuario registrado y pongo mi clave, entra bien.
Pero si mi clave es la generada aleatoriamente, no funciona.

Es decir, partimos con la base de que comparar, compara bien la clave al hacer login con la guardada en la bdd codificada.
Pero no la compara bien cuando es aleatoria, no se si porque se genera mal, se guarda mal, se envia mal al email,...
No doy con el error.
He probado tambien a incluir trim() por si acaso, y nada.
  #9 (permalink)  
Antiguo 14/06/2013, 16:14
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Contraseña aleatoria, error al hacer login.

ES QUE... deberias almacenar IGUAL la clave aleatoria ('t4g*&%*@%$') que la que el usuario ingresa normalmente ('amor','sexo','dinero') y ademas antes de almacenarla deberia recibir EL MISMO tratamiento incluido md5() si lo haces normalmente y sino no.

O sea... si las tratas diferente...tendras un problema

Haz de cuenta que fue EL USUARIO quien creo esa pass aleatoria
__________________
Salu2!
  #10 (permalink)  
Antiguo 15/06/2013, 09:53
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Contraseña aleatoria, error al hacer login.

Si la cosa es que tanto la contraseña que pone el usuario en el registro como la que se genera aleatoriamente se tratan IGUAL en todo momento.

El problema es que algo me falla en la que se genera aleatoriamente que hace que no funcione!!

Etiquetas: aleatoria, contraseña, registro, select, sql, usuarios, variables
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 18:18.