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%%';
$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 > 0 || $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();
}
?>
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($f= mysql_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>';
}
}
?>