Hola buenos días,
Tengo un problema en un código para validar los datos de un usuario registrado.
Introduzco los datos correctos sin embargo no me deja continuar. Les muestro los códigos:
Tengo el siguiente formulario para ingresar los datos del usuario a la bd.
Código HTML:
<form action="usuario.php" method="post" name="registra-form" id="valida-form">
<div class="title-forms">Configuración de Usuarios</div>
<input type="text" name="usuario" id="usuario" class="adaptive-input-b" placeholder="Usuario" required>
<input type="password" name="password" id="password" class="adaptive-input-b" placeholder="Password" required>
<input type="password" name="confirma" id="confirm" class="adaptive-input-b" placeholder="Confirmar Password" required>
<input type="email" name="email" id="email" class="adaptive-input-b" placeholder="Correo electrónico" required>
<select name="tipoUser" id="tipoUser" class="adaptive-input-b">
<option value="0">:: Seleccione el tipo de usuario ::</option>
<option value="General">General</option>
<option value="Administrativo">Administrativo</option>
<option value="Normal">Normal</option>
</select>
<input type="submit" name="enviar-usu" id="enviar-usu" class="adaptive-btn" value="AGREGAR">
<input type="submit" name="borrar-usu" id="borrar-usu" class="adaptive-btn" value="ELIMINAR">
<input type="submit" name="cambiar-usu" id="cambiar-usu" class="adaptive-btn" value="CAMBIAR">
<input type="submit" name="ver-usu" id="ver-usu" class="adaptive-btn" value="BUSCAR">
</form>
y por medio de un script php se envían los datos a la base:
Código PHP:
if(isset($_POST['enviar-usu'])){
$usuario = $_POST['usuario'];
$password = $_POST['password'];
$email = $_POST['email'];
$codifPass = md5($password);
$sqlInsertUsuario = mysql_query("Insert into gb_usuarios(gbuser_usuario, gbuser_password, gbuser_email, gbuser_tipo) Values ('$usuario', '$codifPass', '$email', '$_POST[tipoUser]')");
$mensaje = 'El usuario ha sido agregado a la tabla de Usuarios';
}
Como verán uso el md5 pra encriptar el password, el usuario que di de alta (es usuario de prueba) fue el siguiente:
Usuario: Administrador
Password: gb13admin que resultó codificado en 8f8a2f654b442d33c1a9679ee2a45464
Correo:
cualquiera@cualquiera.com
Tipo: General
Hasta ahí todo bien, ahora el formulario del login
Código HTML:
<form action="login.php" method="post">
<input type="text" name="user" id="user" class="adaptive-input-a" placeholder="Nombre de usuario" required />
<input type="email" name="email" id="email" class="adaptive-input-a" placeholder="Correo electrónico" required />
<input type="password" name="password" id="password" class="adaptive-input-a" placeholder="Password" required /><br />
<span class="format-textos-login"><?php echo $errorSession . ' ' . $msjError; ?></span><br />
<input type="submit" name="conectar" id="conectar" class="adaptive-btn" value="CONECTAR">
</form>
y el script que envía la petición a la base de datos:
Código PHP:
function variablesSeguras($variable){
$variable = addslashes(trim($variable));
return $variable;
}
if(isset($_POST['conectar'])) {
if(!ctype_alnum($_POST['user'])){
$msjError = 'Sólo se permiten caracteres A-Z, a-z, 0-9';
} else {
$login = variablesSeguras($_POST['user']); }
if(!ctype_alnum($_POST['password'])){
$msjError = 'Sólo se permiten caracteres A-Z, a-z, 0-9';
} else {
$passw = variablesSeguras($_POST['password']);
$passCod = md5(trim($passw));
}
if(!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['email'])) {
$msjError = 'Su email no es válido';
} else {
$email = variablesSeguras($_POST['email']);
}
$sqlSelectUser = mysql_query("Select * from gb_usuarios Where gbuser_usuario = '$login' and gbuser_password = $passCod and gbuser_email = '$email'");
$rowSelectUser = mysql_fetch_array($sqlSelectUser);
$_login_a = $rowSelectUser['gbuser_usuario'];
$_login_b = $rowSelectUser['gbuser_password'];
$_login_c = $rowSelectUser['gbuser_email'];
$_login_d = $rowSelectUser['gbuser_tipo'];
if($login == $_login_a && $passw == $_login_b && $email == $_login_c){
$_SESSION['estado'] = "logueado";
$_SESSION['usuario'] = $_login_a;
$_SESSION['tipo'] = $_login_d;
header('Location:index.php');
} elseif($login != $_login_a || $passw != $_login_b || $email != $_login_c) {
$errorSession = "Los datos proporcionados son incorrectos.";
}
}
Pienso, no estoy seguro, que el error está al desencriptar el password, porque al principio tenía el formulario sin encriptarlo, cuando use la función fallo. Sin embargo, imprimiendo las variables veo que lleva la misma cadena que la que está en la base de datos [8f8a2f654b442d33c1a9679ee2a45464].
¿Alguien sabe si estoy cometiendo algún error? De antemano agradezco por sus comentarios.
Saludos!