Foros del Web » Programando para Internet » PHP »

un pequeño error

Estas en el tema de un pequeño error en el foro de PHP en Foros del Web. hola estoy tartando de utilizar un autentificador pero tengo este problemita cuando verifica el usuario y su contraseña este es parte del codigo original $db_conexion= ...
  #1 (permalink)  
Antiguo 13/01/2004, 16:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 14 años, 2 meses
Puntos: 0
un pequeño error

hola estoy tartando de utilizar un autentificador pero tengo este problemita cuando verifica el usuario y su contraseña

este es parte del codigo original

$db_conexion= mysql_connect("$sql_host", "$sql_usuario", "$sql_pass") or die(header ("Location: $redir?error_login=0"));
mysql_select_db("$sql_db");

// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta = mysql_query("SELECT ID,usuario,pass,nivel_acceso FROM $sql_tabla WHERE usuario='".$_POST['user']."'") or die(header ("Location: $redir?error_login=1"));

// miramos el total de resultado de la consulta (si es distinto de 0 es que existe el usuario)
if (mysql_num_rows($usuario_consulta) != 0) {

// eliminamos barras invertidas y dobles en sencillas
$login = stripslashes($_POST['user']);
// encriptamos el password en formato md5 irreversible.
$password = md5($_POST['pass']);

// almacenamos datos del Usuario en un array para empezar a chequear.
$usuario_datos = mysql_fetch_array($usuario_consulta);

// liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
mysql_free_result($usuario_consulta);
// cerramos la Base de dtos.
mysql_close($db_conexion);

// chequeamos el nombre del usuario otra vez contrastandolo con la BD
// esta vez sin barras invertidas, etc ...
// si no es correcto, salimos del script con error 4 y redireccionamos a la
// página de error.
if ($login != $usuario_datos['usuario']) {
Header ("Location: $redir?error_login=4");
exit;}

// si el password no es correcto ..
// salimos del script con error 3 y redireccinamos hacia la página de error
if ($password != $usuario_datos['pass']) {
Header ("Location: $redir?error_login=3");
exit;}

aqui esta el problema siempre que entro me dice password incorrecta (los datos en la tabla estan correctos)
se supone que en $password rescate la password que ingrese en el formulario para que la compare con la de la tabla en la base de datos , bueno no se porque pero no la reconoce, como prueba le cambie lo siguiente
if ($password != "12345") {
Header ("Location: $redir?error_login=3");
exit;}

12345 es la clave asi me funciona , pero me gustaria saber porque no me compara de la otra forma con los datos de la tabla
gracias por su ayuda
  #2 (permalink)  
Antiguo 14/01/2004, 03:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si no recuerdo mal (y tu no lo has cambiado), el autenticador de Cluster almacena los pass en la base de datos codificados con md5. Asi que tendras que comparar el valor codificado con MD5 del pass metido en el formulario, con el valor de la tabla. PHP tiene la funcion md5() (www.php.net/md5):
Código PHP:
if (strtolower(md5($password)) != strtolower($usuario_datos['pass'])) {
Header ("Location: $redir?error_login=3");
exit;} 
El strtolower() (www.php.net/strtolower) es para poner ambas cadenas en minusculas. Es porque el MD5 genera una cadena de 32 valores hexadecimales (0-f), y alguna vez he tenido problemas con sistemas que generaban el MD5 en mayusculas y otros en minusculas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 14/01/2004, 07:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Así es Josemi .. las contraseñas las guarda en formato MD5(). (los problemas de "case-sensitive" para el MD5() generado . .hasta la fecha no he tenido, pero lo tengo presente por si acaso).

naty_24 .. Si usastes Autentificator y su instalador que lo acompaña .. este crea un usuario con su contraseña en formato MD5() (ademas de las tablas necesarias). En el administrador "demo" que acompaña el script tienes el proceso de ingreso de nuevos usuarios con sus contraseñas en MD5().

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 14/01/2004, 07:57
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, el problema de case-sensitive que tube fue en tiempos de PHP3, y era con un js que implementaba el MD5 en mayusculas y el md5() de MySQL en minusculas (o al reves). Desde entonces he cogido la costumbre de comparar los valores de MD5 con strtolower, para curarme en salud.

Saludos.

PD: Aquel js tambien me dio problemas en Mac, pero por tema de little y big endian. Pero eso es otra historia que no tiene que ver con PHP.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 15/01/2004, 16:28
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 14 años, 2 meses
Puntos: 0
gracias a todos
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 13:40.