Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2011, 11:16
gonzaloaedo
 
Fecha de Ingreso: marzo-2011
Mensajes: 31
Antigüedad: 13 años, 1 mes
Puntos: 1
Registro y validación de usuarios con hash

Hola

amigos estoy trabajando en un formulario de Registro y validación de usuarios con hash y tengo algunos inconvenientes.

El formulario de registro funciona perfecto me encripta la CONTRASEÑA y queda bien en la base de datos pero cuando quiero loguearme me dice que la contraseña es incorrecta, me imagino que es porque al momento de loguearme se envía la clave sin encriptar y al pasar por validar_usuario.php y hacer la comparación de password arroja error en el password claro está por que al comparar la clave que envié desde el login no esta encriptada y la de la base de datos si lo está y por logica no me deja entrar.... de esta forma lo entiendo yo

Mi pregunta es, ¿qué es lo que debo hacer?, en que estoy mal, me pueden ayudar por favor.

Aquí los códigos que estoy ocupando

registrar.php
Código PHP:
<?php
session_start
();

mysql_connect('xxxxxxxx','xxxxxxxx','xxxxxxxx')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db("xxxxxxxx")or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function 
mostrar(){
echo
'<form action="registrar.php" method="post" name="1">
Usuario (max 20): 
  <input type="text" name="username" size="20" maxlength="20" /><br />
Password (max 10): 
<input type="password" name="password" size="10" maxlength="10" />
Confirma: <input type="password" name="password2" size="10" maxlength="10" /><br />
Nombre (max 20): 
  <input type="text" name="nombre" size="20" maxlength="20" /><br />
Apellido (max 20): 
  <input type="text" name="apellido" size="20" maxlength="20" /><br />  
Email (max 40): 
<input type="text" name="email" size="20" maxlength="40" /><br />
<input type="submit" value="Registrar" />
</form>'
;

//---------------- en algún video de registro de usuarios en youtube vi que en alguna parte de este código en la parte de password -------
//---------------- colocaban un hash de manera que cuando la base de datos lo recibe y lo compara lo deja pasar si es que la clave es correcta
}
function 
mostrar1(){
echo
'<FORM ACTION="validar_usuario.php" METHOD="post">
                  Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
                  Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=50><br />
                  <INPUT TYPE="submit" VALUE="Ingresar">
                </FORM>'
;
}
//---------------------------------------------------------------------------------------------------------------------------------------------
?>

<?php
 
// verificamos si se han enviado ya las variables necesarias.
if (isset($_POST['username']) && isset($_POST['password'])) {

    
$username    $_POST['username'];
    
$password    $_POST['password'];
    
$password2   $_POST['password2'];
    
$nombre      $_POST['nombre'];
    
$apellido    $_POST['apellido'];
    
$email       $_POST['email'];
    
    
$cadena '478@€shdk%%';
    
$passsha1($password); // Encriptas la contraseña
    
    // Hay campos en blanco
    
if($username == NULL || $password == NULL || $password2 == NULL || $nombre == NULL || $apellido == NULL || $email == NULL) {
        
        echo 
'Un campo está vacio.';
        
mostrar();
    
    } else {
        
        
// ¿Coinciden las contraseñas?
        
if($password != $password2) {
            
            echo 
'Las contraseñas no coinciden';
            
mostrar();
        
        } else {
            
            
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkuser mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
            
$username_exist mysql_num_rows($checkuser);
            
$checkemail mysql_query("SELECT email FROM usuarios WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            
            if (
$email_exist || $username_exist 0) {
                
                echo 
'El nombre de usuario o la cuenta de correo estan ya en uso';
                
mostrar();
                
            } else {
                
                
$query 'INSERT INTO usuarios (usuario, password, nombre, apellido, email, fecha)
                VALUES (\''
.$username.'\',\''.$pass.'\',\''.$nombre.'\',\''.$apellido.'\',\''.$email.'\',\''.date("d-m-Y").'\')';
                
mysql_query($query) or die ('Ha fallado la entrada de datos'); // Si falla nos avisa.
                
echo 'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />';
                echo 
'Ahora puede entrar ingresando su usuario y su password <br />';
                
mostrar1();
                
?>
                
                <?php
            
}
        }
    }
    
} else {
    
    
mostrar();

}

?>
validar_usuario.php
Código PHP:
<?php

//--------------este es el script que me permite validar al usuario ( validar_usuario.php ) 
       
mysql_connect('xxxxxxxx','xxxxxxxx','xxxxxxxx');
       
mysql_select_db("xxxxxxxx");
       
$usuario strtolower($_POST["usuario"]);
       
$password $_POST["password"];
if(
$usuario!= "" && $password!= "")
{
    
$sql mysql_query('SELECT password, usuario FROM usuarios WHERE usuario="'.$usuario.'"');
    if(
$fmysql_fetch_array($sql)){
        if(
sha1($password) == $passwordDB) { 
            
$_SESSION["k_username"] = $f['usuario'];
            echo 
'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
            echo 
'<a href="index.php">Index</a></p>';
        
        }else{
            echo 
'Password incorrecto';
            echo 
'<a href="index.php">Index</a></p>';
        }
    }else{
        echo 
'Usuario no existente en la base de datos ';
        echo 
'<a href="index.php">Index</a></p>';
    }
    
}

?>
gracias a todos espero sus respuestas