Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/12/2008, 15:40
Rodre
Invitado
 
Mensajes: n/a
Puntos:
No puedo encontrar por qué no anda...

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
  1. <?
  2. $_SESSION['validate'] = 0;
  3. ?>
  4. <html>
  5. <head>
  6. <title>Log in</title>
  7. <link rel="stylesheet" type="text/css" href="login.css">
  8. </head>
  9. <body>
  10. <?
  11. if ($_SESSION['error'] == 1)
  12.   {
  13.     echo "Contraseña inválida";
  14.     $_SESSION['error'] = 0;
  15.   }
  16. else if ($_SESSION['error'] == 2)
  17.   {
  18.     echo "Usuario inexistente";
  19.     $_SESSION['error'] = 0;
  20.   }
  21. else
  22.   {
  23.     echo "&nbsp;";
  24.   }
  25. ?>
  26. <div align="center">
  27.   <div class="contenedor">
  28.     <form action="validate.php" method="post">
  29.       <table>
  30.         <tr>
  31.           <td>Usuario:</td>
  32.           <td><input type="text" name="usuario"></td>
  33.         </tr>
  34.         <tr>
  35.           <td>Password:</td>
  36.           <td><input type="password" name="password"></td>
  37.         </tr>
  38.         <tr>
  39.           <td colspan="2" align="center"><input type="submit" value="Ingresar"></td>
  40.         </tr>
  41.       </table>
  42.     </form>
  43.   </div>
  44. </div>
  45. </body>
  46. </html>

CODIGO DE VALIDATE.PHP
Código php:
Ver original
  1. <?
  2. $_SESSION['error'] = 0;
  3. $usuario = $_POST['usuario'];
  4. $password = $_POST['password'];
  5. $conexion = mysql_connect('localhost','root','atun');
  6. if (!$conexion)
  7.   {
  8.     echo "No se puede conectar";
  9.   }
  10. mysql_select_db("nicole");
  11. $query = "SELECT * FROM sesiones WHERE user = '$usuario'";
  12. $rowset = mysql_query($query);
  13. $log = 0;
  14. if($row = mysql_fetch_array($rowset))
  15.   {
  16.     do
  17.     {
  18.       if($row['pass'] == $password)
  19.       $log = 2;
  20.     }
  21.       while($row = mysql_fetch_array ($rowset));
  22.     }
  23. else $log = 1;
  24. if($log == 0) // Contraseña inválida
  25.   {
  26.     $_SESSION['error'] = 1;
  27.     Header("Location: login.php");
  28.   }
  29. else if($log == 1) // Usuario inexistente  
  30.   {
  31.     $_SESSION['error'] = 2;
  32.     Header("Location: login.php");
  33.   }
  34. else if ($log == 2) // Success
  35.   {
  36.     $_SESSION['validate'] = 1;
  37.     Header("Location: manage.php");
  38.   }
  39. mysql_close($conexion);
  40. ?>

Saludos

Última edición por GatorV; 13/12/2008 a las 16:05