Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/02/2009, 13:40
imaca
 
Fecha de Ingreso: febrero-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas con contraseñas

A ver, el codigo esta a cachitos...

Una vez capturada la contraseña en el formulario de registro la cifro:

Código PHP:
$pass=sha1($_POST["password"]); 
Luego se almacena en una base de datos mysql donde al campo passwod se le ha dado el tipo varchar(40)

La consulta que introduce los valores en la base de datos despues de conectarla correctamente

Código PHP:
function insertar_datos_usuario ($link$nick$pass$mail) {
           
$query "insert into usuario (id_usuario, password, mail) values ('$nick', '$pass', '$mail')";
        
$result mysql_query($query,$link);
        if (
$result==false) {
            
printf ("Error de escritura en la BD: ".mysql_error());
            die(); 
        }
        return 
$result
Aquí terminaría el registro. Luego cuando el usuario ya registrado se quiere loguear tendrá que meter la contraseña en un formulario para compararla con la de la base de datos. Para eso convertimos la contraseña en sha1 antes de compararla con la de la base de datos.

Código PHP:
$pass=sha1($_POST["password"]); 
Esta es la consulta que me devuelve el password de la base de datos para comprobarlo con el introducido:
Código PHP:
function consulta_password ($nick$link) {
        
$query "select password from usuario where id_usuario='$nick'";
        
$result mysql_query($query$link);
        if (
$result==false) {
            
printf ("Error de lectura en la BD: ".mysql_error());
            die();
        }
        return 
$result;
    } 
Luego extraemos de $result la contraseña

Código PHP:
function extrae_pass ($nick) {
        
$link conectar();
        
$result consulta_password ($nick$link);
        
$pass mysql_fetch_row($result);
        
desconectar ($link);
        return 
$pass[0];
    } 
Y por ultimo las comparas:
Código PHP:
function comprobar_password ($pass1$pass2) {
        
$resultado true;
        if (
$pass1=="" || strcmp($pass1$pass2)!=0) { 
            
$resultado false;
        }    
        return 
$resultado;
    }