Estoy haciendo un validador de usuario y contraseña. Está practicamente terminado pero hace una cosa muy extraña. El tema es con los diferentes tipos de error que puede haber al poner mal usuario y contraseña. Está hecho de forma tal que cuando usuario y/o contraseña no concuerdan con la base, avisa dónde está el error y vuelve a mostrar el form para ingresar los datos.
Si se ponen bien los datos funciona bien.
Si se pone mal el usuario, salta el cartel de usuario uinexistente, y pone el form de nuevo.
El problema es que si se pone bien el usuario, pero mal la contraseña, vuelve al login, pero no muestra el cartel de contraseña inválida!... y lo más loco, es que solo sucede la primera vez. Es decir si luego de que no acertó la primera vez, la vuelvo a ingresar mal.. ahi si me muestra el cartel. La verdad estoy hace media hora revisando el código, y no me doy cuenta de lo que sucede. Pongo el código a ver si alguien encuentra lo que sucede.
Soy nuevo en esto, así que quizá haya algo muy boludo que no estoy viendo..
Gracias de antemano
CODIGO DE LOGIN.PHP
Código php:
Ver original<?
$_SESSION['validate'] = 0;
?>
<html>
<head>
<title>Log in</title>
<link rel="stylesheet" type="text/css" href="login.css">
</head>
<body>
<?
if ($_SESSION['error'] == 1)
{
echo "Contraseña inválida";
$_SESSION['error'] = 0;
}
else if ($_SESSION['error'] == 2)
{
echo "Usuario inexistente";
$_SESSION['error'] = 0;
}
else
{
echo " ";
}
?>
<div align="center">
<div class="contenedor">
<form action="validate.php" method="post">
<table>
<tr>
<td>Usuario:</td>
<td><input type="text" name="usuario"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Ingresar"></td>
</tr>
</table>
</form>
</div>
</div>
</body>
</html>
CODIGO DE VALIDATE.PHP
Código php:
Ver original<?
$_SESSION['error'] = 0;
$usuario = $_POST['usuario'];
$password = $_POST['password'];
if (!$conexion)
{
echo "No se puede conectar";
}
$query = "SELECT * FROM sesiones WHERE user = '$usuario'";
$log = 0;
{
do
{
if($row['pass'] == $password)
$log = 2;
}
}
else $log = 1;
if($log == 0) // Contraseña inválida
{
$_SESSION['error'] = 1;
Header("Location: login.php"); }
else if($log == 1) // Usuario inexistente
{
$_SESSION['error'] = 2;
Header("Location: login.php"); }
else if ($log == 2) // Success
{
$_SESSION['validate'] = 1;
Header("Location: manage.php"); }
?>
Saludos