Foros del Web » Programando para Internet » PHP »

Problema con identificacion de usuario

Estas en el tema de Problema con identificacion de usuario en el foro de PHP en Foros del Web. Hola a todos, estoy haciendo una identificacion de usuarios, por php, el registro me funciona perfecto y todo bien pero cuando quiero identificarlo me da ...
  #1 (permalink)  
Antiguo 19/10/2008, 10:36
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 7 meses
Puntos: 0
Problema con identificacion de usuario

Hola a todos, estoy haciendo una identificacion de usuarios, por php, el registro me funciona perfecto y todo bien pero cuando quiero identificarlo me da un error, el registro se que funciona porque por phpmyadmin chequeo si creo el usuario y esta todo ok, la contraseña encriptada y todo pero no consigo autentificarlo.

el script que utilizo es el siguiente

tengo un formulario que envia las variables user y pass al archivo clientes.php

en clientes tengo lo siguiente

Código php:
Ver original
  1. <?php
  2. require_once 'requires.php';
  3.  
  4. //ASIGNAMOS LAS VARIABLES DE POST A VARIABLES SIMPLES
  5. $user = $_POST['user'];
  6. $pass = $_POST['pass'];
  7.  
  8. if ($user && $pass)
  9. {
  10.     if (login($user, $pass))
  11.     {
  12.         //SI ESTA REGISTRADO GUARDAR DATOS
  13.         $valid_user = $user;
  14.         session_register("valid_user");
  15.     }
  16.    
  17.     else
  18.     {
  19.         head("Acceso Denegado");
  20.        
  21.         cuerpo_nouser();
  22.        
  23.         footer();
  24.  
  25.         exit;
  26.     }
  27. }
  28.  
  29. check_valid_user();
  30.        
  31. ?>

la funcion login() y check_valid_user que estan en el archivo func_user.php son las siguientes

Código php:
Ver original
  1. <?php
  2. function login($user, $pass)
  3. {
  4. //CONECTAMOS A LA BASE DE DATOS
  5.     $conn = conecta_db();
  6.  
  7.     if (!conn)
  8.         return 0;
  9.  
  10.     $result = mysql_query("select * from usuario
  11.                             where 'usuario'='$user'
  12.                             and 'pass' = pasword('$pass')");
  13.                        
  14.     if (!result)
  15.         return 0;
  16.    
  17.     if (mysql_num_rows($result)>0)
  18.         return 1;
  19.     else
  20.         return 0;
  21.  
  22. }
  23.  
  24. function check_valid_user()
  25. {
  26.     global $valid_user;
  27.     global $user;
  28.    
  29.     if (session_is_registered("valid_user"))
  30.     {  
  31.         $user = $valid_user;
  32.         head("Zona Clientes");
  33.        
  34.         cuerpo_user();
  35.        
  36.         footer();
  37.         exit;
  38.     }  
  39.        
  40.     else
  41.     {
  42.         head("Registro de Clientes");
  43.        
  44.         cuerpo_reguser();
  45.        
  46.         footer();
  47.         exit;
  48.     }
  49. }
  50. ?>

por lo que veo esta bien, pero me da el siguiente error y no me autentifica

Código:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\wamp\www\baterias\func_user.php on line 17
la tabla se llama usuario y los campos se llaman usuario y pass.

magic_quotes y register_globals estan OFF

Desde ya muchas gracias

Última edición por matiD; 19/10/2008 a las 10:44
  #2 (permalink)  
Antiguo 19/10/2008, 11:32
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema con identificacion de usuario

deja asi la query, sin comillas
Código PHP:

 $result 
mysql_query("select * from usuario 
                            where usuario='$user'
                            and pass = pasword('$pass')"
); 
y siempre pon los errores de mysql
Código PHP:
 $result mysql_query("select * from usuario 
                            where usuario='$user'
                            and pass = pasword('$pass')"
) or die (mysql_error())


  #3 (permalink)  
Antiguo 19/10/2008, 12:21
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema con identificacion de usuario

Muchas gracias, ahora no me da el error, de hecho por ver el error de mysql me di cuenta que el problema residia en la funcion password, la habia puesto con una sola S, pero ahora lo extraño es que no me autentifica, es decir no me habilita el ingreso, si le saco el password al query de mysql si, sin ningun problema me permite entrar, solo con el usuario, pero con el password imposible autentificarme que puede ser...

Desde ya muchas gracias
  #4 (permalink)  
Antiguo 19/10/2008, 12:31
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema con identificacion de usuario

Tambien esta guardada la pass codificada asi

pasword('$pass')

en la bbdd??

por que si no, no coincidiran
  #5 (permalink)  
Antiguo 19/10/2008, 13:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema con identificacion de usuario

si en la bd esta guardado asi, ahora en un rato voy a probar sacando la codificacion y viendo si me la toma, porque sinceramente no se que puede pasar si por favor alguno sabe cual puede ser el problema agradezco
  #6 (permalink)  
Antiguo 19/10/2008, 13:43
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema con identificacion de usuario

Mira lo que dice en el manual de MySQL

Nota: La función PASSWORD() se usa por el sistema de autenticación en MySQL Server; no no debe usarlo en su propias aplicaciones. Para ese propósito, use MD5() o SHA1() en su lugar. Consulte RFC 2195 para más información acerca de tratar contraseñas y autenticación de forma segura en su aplicación.

http://dev.mysql.com/doc/refman/5.0/...functions.html
  #7 (permalink)  
Antiguo 19/10/2008, 16:14
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema con identificacion de usuario

hice la prueba sacado la encriptacion del password y funciono perfecto, tambien probe con la encriptacion SHA1 y no pasa nada sigue dando error, ahora estoy probando con MD5...

Acabo de terminar la prueba hice la encriptacion mediatne MD5 se guardo correctamente en la base de datos pero nada no me permite autentificar...

el script es correcto poruqe la prueba que hice sin encriptacion funciono perfecto.

Saludos y AYUDAAAA POR FAVOR
  #8 (permalink)  
Antiguo 19/10/2008, 16:21
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema con identificacion de usuario

ten encuenta, que md5 te da una cadena de caracteres de 32, por lo tanto tu campo de la BBDD ha de admitir un minimo de 32 caracteres varchar 32, por ejemplo.

Y creo que sha1 son 20, a si que si en el campo pass tienes varchar 16 no cogera toda la pass codificada y nunca coincidiran

Un saludo
  #9 (permalink)  
Antiguo 19/10/2008, 20:13
 
Fecha de Ingreso: octubre-2008
Mensajes: 85
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema con identificacion de usuario

ahi esta, era eso tenia 30 caracteres nomas, muchas gracias jaronu sinceramente te pasaste
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 19:40.