Foros del Web » Programando para Internet » PHP »

Problema con password en mysql

Estas en el tema de Problema con password en mysql en el foro de PHP en Foros del Web. Hola como estan! Tengo un problema al buscar datos en una base de datos mysql. Busca un usuario y su contraseña, y el password con ...
  #1 (permalink)  
Antiguo 26/05/2008, 10:22
Avatar de nixspatin  
Fecha de Ingreso: mayo-2008
Mensajes: 113
Antigüedad: 15 años, 11 meses
Puntos: 0
Pregunta Problema con password en mysql

Hola como estan!

Tengo un problema al buscar datos en una base de datos mysql. Busca un usuario y su contraseña, y el password con no lo encuentra. Lo encripto desde php al crear un nuevo usuario usando password(); y despues cuando quiero chekear si el user existe hago la consulta con password tambien. Pero nada!!

Esto verifica los usuarios:
Código PHP:
<?
session_start
();

if (
$userid && $password)
{
  
// Si el usuario ha intentado hacer log in

  
$db_conn mysql_connect("localhost""nombreusuario""contraseña");
  
mysql_select_db("nombreBaseDatos"$db_conn);
  
$query "select * from auth "
           
."where name='$userid' "
           
." and pass=password('$password')";
  
$result mysql_query($query$db_conn);
  if (
mysql_num_rows($result) >)
  {
    
// si están en la base de datos registra la id de usuario
    
$valid_user $userid;
    
session_register("valid_user");
  }
}
?>
<html>
<body>
<h1>Página Inicio</h1>
<?

  
if (session_is_registered("valid_user"))
  {
    echo 
"Ahora estás logged in como: $valid_user <br>";
    echo 
"<a href=\"logout.php\">Log out</a><br>";
  }
  else
  {
    if (isset(
$userid))
    {
      
// si han intentado hacer login y ha fallado
      
echo "No has podido hacer login";
    }
    else
    {
      
// si no han intentado hacer login  y no han hecho logged out
      
echo "No has hecho logged in.<br>";
    }

    
// provee el formulario para hacer  log in
    
echo "<form method=post action=\"authmain.php\">";
    echo 
"<table>";
    echo 
"<tr><td>Userid:</td>";
    echo 
"<td><input type=text name=userid></td></tr>";
    echo 
"<tr><td>Contraseña:</td>";
    echo 
"<td><input type=password name=password></td></tr>";
    echo 
"<tr><td colspan=2 align=center>";
    echo 
"<input type=submit value=\"Log in\"></td></tr>";
    echo 
"</table></form>";
  }
?>
<br>
<a href="members_only.php">Sección de Miembros</a>
</body>
</html>

En la base se almacena esto:


name pass
testuser *676243218923905CF94CB52A3C9D3


Alguien tiene idea de por que no funciona!!??

Gracias!!
  #2 (permalink)  
Antiguo 26/05/2008, 10:41
 
Fecha de Ingreso: mayo-2008
Mensajes: 16
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con password en mysql

Para encriptar el password utiliza la funcion md5()
Esta funcion te encripta un texto en una cadena de 32 caracteres, lo unico que tienes que verificar que el campo password de tu BD tenga una longitud de 32 caracteres. Si al final te decides y la usas tienes que tener en cuenta que es una funcion de un solo sentido, o sea, no podras volver a la palabra original una vez encriptada.

Saludos
  #3 (permalink)  
Antiguo 26/05/2008, 10:55
Avatar de nixspatin  
Fecha de Ingreso: mayo-2008
Mensajes: 113
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con password en mysql

Gracias.

Use md5(); , y registre un nuevo user y se creo correctamente el pass encriptado. Mi problemas es que despues cuando quiero que un user haga login, hago una consulta

$query = "select * from auth "
."where name='$userid' "
." and pass=md5('$password')";

y no funciona!!!
  #4 (permalink)  
Antiguo 26/05/2008, 11:12
 
Fecha de Ingreso: mayo-2008
Mensajes: 16
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con password en mysql

Prueba hacerlo asi:

Código PHP:
$encrypted md5($password);
$query "SELECT * FROM auth WHERE name = '$userid' AND pass = '$encrypted'"
Acuerdate que el campo pass de la BD debe tener una logitud de 32 caracteres obligatoriamente.
  #5 (permalink)  
Antiguo 26/05/2008, 11:43
Avatar de nixspatin  
Fecha de Ingreso: mayo-2008
Mensajes: 113
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con password en mysql

Intente, y lo cambie, pero sigue sin funcionar

Código PHP:
<?

require_once("db_fns.php");

function 
register($username$email$password)
// register new person with db
// return true or error message
{
 
// connect to db
  
$conn db_connect();
  if (!
$conn)
    return 
"No se puede conectar al servidor de la base de datos - por favor inténtalo más tarde.";

  
// check if username is unique
  
$result mysql_query("select * from user where username='$username'");
  if (!
$result)
     return 
"No se pudo ejecutar la petición";
  if (
mysql_num_rows($result)>0)
     return 
"Ese nombre de usuario ya está ocuapdo - vuelve y elige otro.";

  
// if ok, put in db


  
$password=md5($password);
  
$result mysql_query("insert into user values
                         ('$username','$password', '$email')"
);
  if (!
$result)
    return 
"No has podido ser registrado en la base de datos - por favor inténtalo más tarde.";

  return 
true;
}

function 
login($username$password)
// check username and password with db
// if yes, return true
// else return false
{
  
// connect to db
  
$conn db_connect();
  if (!
$conn)
    return 
0;

  
// check if username is unique

  
$password=md5($password);
  
$result mysql_query("select * from user
                         where username='$username'
                         and passwd = '$password'"
);
  if (!
$result)
     return 
0;

  if (
mysql_num_rows($result)>0)
     return 
1;
  else
     return 
0;
}
  #6 (permalink)  
Antiguo 26/05/2008, 11:53
Avatar de nixspatin  
Fecha de Ingreso: mayo-2008
Mensajes: 113
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con password en mysql

$password=md5($password);
$result = mysql_query("select * from user
where username='$username'
and passwd = '$password'");
  #7 (permalink)  
Antiguo 26/05/2008, 12:15
 
Fecha de Ingreso: mayo-2008
Mensajes: 16
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con password en mysql

Dime que error te esta dando la autenticacion.
  #8 (permalink)  
Antiguo 27/05/2008, 11:23
Avatar de nixspatin  
Fecha de Ingreso: mayo-2008
Mensajes: 113
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con password en mysql

El error que me esta dando es que no me puedo logear. Osea, no es un error php ni mysql, es que simplemente, poniendo el user y el pass correctos no me loguea. Probe registrar y logear sin encriptar y me andubo de maravilla; pero me gustaria que se pudiera hacer mas seguro el pass,con md5(); gracias.
  #9 (permalink)  
Antiguo 30/05/2008, 09:32
Avatar de nixspatin  
Fecha de Ingreso: mayo-2008
Mensajes: 113
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con password en mysql

Salio!!!!!!!! jaja!!!!! Que tonto!! Estaba usando para md5(); un campo con solo 30 caracteres... y md5(); tiene una encriptacion de 32 caracteres... por eso me recortaba la clave y despues cuando queria validar se comparaba la clave ingresada por el usuario que era de 32 bits a una de 30 que estaba recortada y entonces nunca podian hacer login!!!

Pedazo de bludo!!!
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 22:17.