Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2008, 08:50
guajolote
 
Fecha de Ingreso: mayo-2008
Mensajes: 5
Antigüedad: 16 años
Puntos: 0
Cookies y MD5 en login

Hola
Tengo la necesidad de hacer un sistema de registro y autentificación con login y passwd. Buscando por la red, encontré partes de código que, supuestamente le funcionan al autor, pero en mi caso me encontré con un problema (el único hasta ahora).

1º) La parte del registro de usuario funciona bien: Esto es, encripta el password.
2º) La parte del login es la que no funciona.

A ver si me podéis echar una mano:

Este archivo se llama verifica.php y es quien debe hacer la validación con la BD una vez que introducimos el login y passwd en el formulario y pulsamos sobre "aceptar" para que se haga la autentificación. Creo que aqui es donde esta el problema, pero a ver si alguien sabe específicamente donde.

Código:
<?php
include('config.php');
$user=stripslashes($_POST['username']);
$pass=stripslashes($_POST['password']);
$query = mysql_query("SELECT password FROM users WHERE username = '$user' limit 1") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] == md5($pass)) {
$_SESSION['user'] = $user;
$nonce = md5(uniqid(rand(), true));
setcookie("nonce", $nonce, time()+3600*12);
$query = mysql_query("UPDATE users SET nonce = '$nonce' WHERE username = '$user'");
echo "login ok";
exit();
} else {
echo "fail";
exit();
}

?>
Aqui pongo también el archivo registro.php que es quien hace el ALTA en la base de datos con el nombre, passwd, etc del nuevo usuario (Este funciona bien).

Código:
<?php
include('config.php');
if (isset($_POST["username"])) {
$user = $_POST["username"];
$pass = $_POST["password"];
$cpass = $_POST["cpassword"];
$email = $_POST["email"];
if($user==NULL|$pass==NULL|$cpass==NULL|$email==NULL) {
echo "Algún campo está vacio.";
}else{
if($pass!=$cpass) {
echo "Las contraseñas no coinciden";
}else{
$checkuser = mysql_query("SELECT username FROM users WHERE username='$user'");
$username_exist = mysql_num_rows($checkuser);

$checkemail = mysql_query("SELECT email FROM users WHERE email='$email'");
$email_exist = mysql_num_rows($checkemail);

if ($email_exist>0|$username_exist>0) {
echo "EL nombre de usuario o la cuenta de correo estan ya en uso";
}else{
$epass = md5($password);
$nonce = md5(uniqid(rand(), true));
$query = "INSERT INTO users (username, password, email, nonce) VALUES('$user','$epass','$email','$nonce')";
mysql_query($query) or die(mysql_error());
echo "El usuario $user ha sido registrado de manera satisfactoria."
Gracias