Foros del Web » Programando para Internet » PHP »

Que le pasa a esto?

Estas en el tema de Que le pasa a esto? en el foro de PHP en Foros del Web. Estoy tratando de hacer una página de login donde el usuario pueda entrar su nombre de usuario y su clave el problema es que la ...
  #1 (permalink)  
Antiguo 23/05/2003, 11:42
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Que le pasa a esto?

Estoy tratando de hacer una página de login donde el usuario pueda entrar su nombre de usuario y su clave el problema es que la clave en la BD está encriptada en MD5 y no se si ese será el error. de todas formas aquí está el scrpt:

Login.php
Código PHP:
<?php
 $link 
mysql_connect("localhost","","");
 
mysql_select_db("registro");
 
$consult "SELECT  * FROM registro WHERE login ='$login'";
 
$result mysql_query($consult);
 
$pa md5($password);
 if(
$row mysql_fetch_array($result)){
    if (
$row['password'] == $pa) { 
        echo 
"Ahora sí";
        
header("Location: upload.php");
        exit();
    } else {
        echo 
"<font face=\"Tahoma\" size=\"2\">Contraseña inválida.</font>";
    }
} else {
    echo 
"<font face=\"Tahoma\" size=\"2\">Nombre de usuario no válido.</font>&nbsp;" mysql_error();
}
mysql_close();
?>
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 23/05/2003, 13:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
$pa se supone que es la variable de tu formulario de login? .. Has comprobado si en ese punto te llega ese dato? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 23/05/2003, 14:12
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

¿Y que mensaje te muestra? Porque tal como lo tienes te tiene que mostrar uno de los tres echo. Tambien puedes decir que es lo que no te funciona. Tambien como prueba podrias hacer un echo $pa.' - '.$row['password']; para ver visualmente si los dos md5() son identicos. Porque creo que a mi me paso una vez que el md5() de PHP me ponia los caracteres en mayusculas y el MD5() de MySQL me las ponia en minusculas (o al reves o con JS, no me acuerdo exactamente). Si ese seria el problema, solo habria que pasar ambas cadenas a mayusculas(strtoupper()) o a minusculas (strtolower()).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 23/05/2003, 15:05
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Si

la variable del campo password es $password pero como la clave esta encriptada en MD5 pues yo creo una $pa = MD5($password) para compararla con la que tengo encriptada en la BD. El error que me da es que la contaseña es incorrecta.

Saludos
Que hago?
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 23/05/2003, 15:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. a ver:

Has probado lo que te ha mencionado Josemi de que hagas un "echo" al dato que tienes en tu BD $row['password'] y el $pa a ver que obtienes? ... En tal caso (si hay mas dudas al respecto) .. PON lo que te dé ambas variables antes de entrar a tu comparación (IF) ..

Eso es parte de tu trabajo .. el visualizar los valores de las variables que intervengan en tu lógica para detectar posibles problemas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 23/05/2003, 15:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

Pon:
Código PHP:

    
} else {
echo  
$pa.' - '.$row['password'];
        echo 
"<font face=\"Tahoma\" size=\"2\">Contraseña inválida.</font>";

    } 
para ver "visualmente" en que se diferencia lo que comparas. Si se diferencia en que uno esta en mayusculas y otro en minusculas, esa seria la causa del fallo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 23/05/2003, 16:29
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Ayuda please

Ya lo hice y este es el resultado que da:
069d61cc39a316633e2890e436aa0acd - 069d61cc39a316633e2890e43
Contraseña inválida.

No se porque le faltan los últimos 7 caracteres al password.

Y ahora que hago?
__________________
Ing. Reynier Pérez Mira
  #8 (permalink)  
Antiguo 23/05/2003, 17:00
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Esto, el segundo es el dato de la base de datos, ¿verdad? Mira a ver si el campo password tiene un tamaño maximo menor de 32 caracteres. El resultado de md5() siempre es una cadena de 32 caracteres. Si es eso, me temo que esos passwords que tienes metidos en la bd no son validos. Pon el tamaño a 32 y vuelve a generarlos (si puedes).

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 23/05/2003, 17:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El dato de tu BD (tabla) que tiene el password .. de que tipo y tamaño es? ..

Debe ser un VARCHAR de al menos 32 caracteres (si conté bien ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 23/05/2003, 17:03
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Ya lo resolvi

Gracias josemi cuando puse el mensaje anterior me di cuenta que al encriptar el password con md5 este me generaba una cadena de 32 caracteres y en la BD el campo password estaba limitado a 25 por eso al comparar las claves me daba error pues el que sacaba de la BD solo tenia 25 caracteres.

Saludos y gracias

De verás que estoy aprendiendo con ustedes
__________________
Ing. Reynier Pérez Mira
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 17:37.