Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/03/2013, 09:26
silvia_lopez82
 
Fecha de Ingreso: marzo-2013
Mensajes: 4
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: validación de login

Lo siento, no había visto la opción de highlight!

Muchas gracias por las sugerencias. No me han funcionado. Es muy raro porque aparentemente debería funcionar y como digo, si pongo un breakpoint con el FireBug en la línea if(pagina.readyState==4 && pagina.status==200) de la función compruebaLogin() y ejecuto paso a paso, todo funciona bien. Pero si lo pongo en la línea siguiente var respuesta = pagina.responseText.evalJSON(); y doy al play para que se pare ahí, ya no se para y deja de funcionar. Es como si la llamada Ajax no funcionase bien.

Vuelvo a poner el código con highlight:

Formulario de login:
Código HTML:
Ver original
  1. <form id="formLogin" name="formLogin" onsubmit="return validaLogin()" method="POST" action="pagina2.php">
  2.         <h1>Inicia sesión</h1>
  3.         <fieldset>
  4.             <label>Usuario/email: </label>
  5.             <input name="usuario" type="text" size="30" focused autocomplete />
  6.             <div id="error-usuario"></div>
  7.             <label>Contraseña: </label>
  8.             <input name="password" type="password" size="10" focused />
  9.             <div id="error-password"></div>
  10.         </fieldset>
  11.  
  12.         <fieldset>          
  13.           <input class="botonenviar" name="entrar" type="submit" value="Entrar" class="enviar" />
  14.           <input type="checkbox" name="recordarPass" value="recordarPass" /><label>&nbsp&nbspRecordar contraseña </label>
  15.         </fieldset>
  16.     </form>

Función Javascript validaLogin:
Código Javascript:
Ver original
  1. function validaLogin() {
  2.  
  3.         if(compruebaLogin()){
  4.             return true;
  5.         }
  6.         else{
  7.             return false;
  8.         }
  9.  
  10.     }
  11.  
  12.     function compruebaLogin() {
  13.         //Se recuperan los inputs del formulario
  14.         var usuario = document.formLogin.usuario.value;
  15.         var password = document.formLogin.password.value;
  16.         var recordarPass = document.formLogin.recordarPass.checked;
  17.  
  18.         var pagina = false;
  19.         if(window.XMLHttpRequest()){
  20.             pagina = new XMLHttpRequest();
  21.         }else {
  22.             if(window.ActiveXObject()) {
  23.                 try {
  24.                     pagina = new ActiveXObject("Msxml2.XMLHTTP");
  25.                 }catch(e){
  26.  
  27.                     try{
  28.                         pagina = new ActiveXObject("Microsoft.XMLHTTP");
  29.                     }catch(e){}
  30.                 }
  31.             }else{
  32.                 return false;
  33.             }
  34.         }
  35.  
  36.         pagina.onreadystatechange=function(){
  37.             if(pagina.readyState==4 && pagina.status==200){
  38.                 var respuesta = pagina.responseText.evalJSON();
  39.  
  40.                 if(respuesta.error_usuario == "" && respuesta.error_password == "") {
  41.                     return true;
  42.                 } else {
  43.                     document.getElementById('error-usuario').innerHTML=respuesta.error_usuario;
  44.                     document.getElementById('error-password').innerHTML=respuesta.error_password;
  45.                     return false;
  46.                 }
  47.             }
  48.         }
  49.         var params = "usuario="+usuario+"&password="+password+"&checkbox="+recordarPass;
  50.         pagina.open("POST","../lib/controller/validaUsuario.php",true);
  51.         pagina.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  52.         pagina.setRequestHeader("Content-length", params.length);
  53.         pagina.setRequestHeader("Connection", "close");
  54.         pagina.send(params);
  55.     }

Archivo php validaUsuario.php:

Código PHP:
Ver original
  1. $nickname=htmlspecialchars(trim($_POST['usuario']));
  2.     $password=trim($_POST['password']);
  3.  
  4.     $ent_usuario = new Usuario(); //entidad con los atributos de la tabla Usuario
  5.     $usuarioDAO = new UsuarioDAO(); //DAO para gestionar los accesos a la tabla Usuario
  6.     //La función compruebaLogin accede a la tabla usuario y devuelve el usuario 'nickname' o una entidad usuario vacía si no existe
  7.     $ent_usuario = $usuarioDAO->compruebaLogin($nickname, $password);
  8.  
  9.     $error_usuario="";
  10.     $error_password="";
  11.     if($ent_usuario->nickname=="") {
  12.         $error_usuario = 'Usuario no existe. Regístrate <a href="#">aquí!</a>';
  13.     } else {
  14.         if($ent_usuario->password != $password) {
  15.             $error_password = 'Contraseña incorrecta';
  16.         }
  17.     }
  18.  
  19.     $return = array("error_usuario" => $error_usuario, "error_password" => $error_password);
  20.     die(json_encode($return));