Ver Mensaje Individual
  #11 (permalink)  
Antiguo 20/06/2011, 09:54
gonzaloaedo
 
Fecha de Ingreso: marzo-2011
Mensajes: 31
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Registro de usuarios con PHP y seguridad HASH

Cita:
Iniciado por Uncontroled_Duck Ver Mensaje
No puedes ir pegando código y poniendo donde quede más bonito.

Código PHP:
if(sha1($password) == $passwordDB) { 
Esta línea es para hacer una comparación entre dos contraseñas, la que hay en la DB y la que mandas con el form de validación.

Y para eso debe haber antes una consulta donde saques esos datos de la DB y lo pongas en la variable $passwordDB... Si no es como intentar mandar un mail con un donuts, por mucho que lo intentes, no va a salir nada.

Otra cosa, intenta comparar los códigos, ver los cambios e intentar comprender como funciona.

A ver, con esto debería valer:
Código PHP:
// Aquí van las funciones que tienes.
<?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%%';
    
$pass     sha1($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();

}

?>
PD.: Con el code un poco más desplegado se hace más sencilla la lectura.


primero que todo agradezco mucho tu voluntad...

ahora si puedo ver el formulario de registro en el browser, hago el registro de usuario y lo registra perfecto con la contraseña encriptada :) yijuuuu!!!
------------------------------------------------------------------------------------------------------------------
aquí esta lo que mencionabas antes,
"
Código PHP:
if(sha1($password) == $passwordDB) { 
Esta línea es para hacer una comparación entre dos contraseñas, la que hay en la DB y la que mandas con el form de validación."

me quedo algo así

Código PHP:
<?php
       mysql_connect
('localhost','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)) {
    
// Aquí pegue la línea que hace la comparación entre dos contraseñas.
    
if(sha1($password) == $passwordDB) { 
       
$_SESSION["k_username"] = $f['usuario'];
            echo 
'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
            echo 
'<a href="XXXXX.php">Entrar a XXXXXXX</a></p>';
        
          }else{
            echo 
'Contraseña incorrecta';
            echo 
'<a href="index.php">Inicio</a></p>';
        }
          }else{
            echo 
'Usuario no existente en la base de datos ';
            echo 
'<a href="index.php">Inicio</a></p>';
    }
    
}

?>
nuevamente gracias por tu ayuda

Última edición por gonzaloaedo; 20/06/2011 a las 10:17