SoloCodigo
Programación Web y Scripting => PHP => Mensaje iniciado 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';
}
}
?>
-
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í:
$pass=md5($_POST['pass']); $usuarios=mysql_query("SELECT * FROM users WHERE nick='$_POST[nick]' and pass='$pass' ");
-
También lo puedes directamente con la función md5 del mysql
$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