SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: Game User en Miércoles 30 de Mayo de 2012, 19:38

Título: Problema validación de usuario con contraseñas encriptadas en md5
Publicado por: Game User en Miércoles 30 de Mayo de 2012, 19:38
Por favor, ayudadme.
He encriptado las contraseñas de mi web con md5, cuando alguien se registra funciona, la contraseña se encripta en md5.
El problema viene cuando es hora de iniciar sesión. Solo se puede iniciar sesion con la contraseña encriptada.
¿Podriais ayudarme?
codigo de registro:
<?
include('config.php');


if(($_POST[nick] == ' ') or ($_POST[pass] == ' ') or ($_POST[pass1] == ' ') )
{
Header("Location: reg.php");
}else{


if($_POST[pass] != $_POST[pass1])
{
echo 'Las passwords no son iguales';
}else{


$user = stripslashes($_POST["nick"]);
$user = strip_tags($user);
$pass = stripslashes($_POST["pass"]);
$pass = strip_tags($pass);
$pass = md5($contrasena);


$usuarios=mysql_query("SELECT nick FROM users WHERE nick='$user' ");
if($user_ok=mysql_fetch_array($usuarios))
{
echo 'El usuario ya esta registrado';
mysql_free_result($usuarios);
}else{

$email = stripslashes($_POST["email"]);
$email = strip_tags($email);

$fecha = time();
$level = "2";

mysql_query("INSERT INTO users (nick,pass,email,fecha,level) values ('$user','$pass','$email','$fecha','$level') ");
echo 'Usuario registrado exitosamente';
Header("Location: index.php");
}

}

}
?>

codigo de inicio de sesión:
<?
include('config.php');

if( ($_POST[nick] == ' ') or ($_POST[pass] == ' ') )
{
Header("Location: index.php");
}else{

$usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$_POST[pass]' ");
$pass=md5($pass);


$sql = "SELECT * FROM users  WHERE usuario='".$usuario."' AND contrasena='".$contrasena."'"; 

if($user_ok = mysql_fetch_array($usuarios))
{

session_register("usuario");
session_register("idusuario");
session_register("level");

$_SESSION[usuario] = $user_ok["nick"];
$_SESSION[idusuario] = $user_ok["id"];
$_SESSION[level] = $user_ok["level"];
Header("Location: index.php");
}else{
echo 'Nick y pass incorrectos';
}

}
?>
Título: Re:Problema validación de usuario con contraseñas encriptadas en md5
Publicado por: arielb en Miércoles 30 de Mayo de 2012, 21:31
Hola, bienvenido al foro.

Antes de buscar debes encriptar y buscarla ya encriptada, debido que la encriptación va ser la misma, siempre y  cuando esté bien claro. Y no debes buscarla directamente del POST.

No recuerdo bien como hacerlo con php, pero la idea va así:

Código: PHP
  1. $pass=md5($_POST['pass']);
  2. $usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$pass' ");
Título: Re:Problema validación de usuario con contraseñas encriptadas en md5
Publicado por: RadicalEd en Jueves 31 de Mayo de 2012, 21:00
También lo puedes directamente con la función md5 del mysql

Código: PHP
  1. $usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass=md5('".$_POST[nick] ."'");

PD. No uses consultas implicitas mejor son las consultas explicitas