Foros del Web » Programando para Internet » Jquery »

[jQuery] Problema extraño con form plugin

Estas en el tema de [jQuery] Problema extraño con form plugin en el foro de Jquery en Foros del Web. Hola tengo un problema bastante raro utilizando el plugin de form en mi aplicacion, actualmente tengo el siguiente formulario: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original ...
  #1 (permalink)  
Antiguo 08/01/2010, 10:25
 
Fecha de Ingreso: junio-2009
Mensajes: 79
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta [jQuery] Problema extraño con form plugin

Hola tengo un problema bastante raro utilizando el plugin de form en mi aplicacion, actualmente tengo el siguiente formulario:

Código HTML:
Ver original
  1. <form id="form_login" name="form_login" method="post"
  2. enctype="multipart/form-data" action="dologin.php">
  3.  
  4.     Elementos del formulario.....
  5.  
  6. </form>

Estoy usando dologin.php para verificar que el usuario y password coincidan en la base de datos, si coinciden regresa 'ENTER', 'DISABLED' si estan deshabilitados o 'ERROR' sino coincide y manejo esta respuesta con el siguiente script (usando el plugin de form):

Código Javascript:
Ver original
  1. $('#form_login').ajaxForm({
  2.                 beforeSubmit: function (){
  3.                         // Valida que los input no esten vacios
  4.         },
  5.                 success: function(r){
  6.                        alert(r); // Para ver la respuesta..
  7.                         if (r=='ENTER'){                            //Usuario aceptado
  8.                                 window.location.href = 'index_app.php';
  9.                         }else if (r=='DISABLED'){              //Usuario deshabilitado
  10.                                 errorMsg('Usuario deshabilitado');
  11.                         }else{                                         //Login o pass invalido
  12.                                 errorMsg('Login o pass invalido');
  13.                         }
  14.  
  15.         },
  16.                 error: function(r){
  17.                         // Msj de error
  18.                 }
  19.  
  20. });

Estoy usando el alert mientras tanto para verificar la respuesta que obtengo del dologin.php y tengo los siguientes errores:
1. Si el login O el password son incorrectos el alert me muestra el HTML de la pagina actual (index.php).
2. Si el login Y el password son correctos el alert me muestra tambien el HTML de index.php.
3. Luego de esto funciona como deberia, el alert me muestra ENTER, DISABLED o ERROR dependiendo de el caso.

Pareciera como si no estuviera entrando en el action del form si el usuario o el pass es incorrecto, solo lo hace luego de que se coloca un login o pass correcto.

Alguien sabe que puede estar pasando?? Gracias de antemano!!
  #2 (permalink)  
Antiguo 08/01/2010, 12:12
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: [jQuery] Problema extraño con form plugin

El 3 se refiere a que solo si todo es incorrecto obtenes una respuesta clara?

Habria que ver el archivo PHP. Correlo sin ajax, directamente, y fijate que imprimen en pantalla los "echo" en cada caso. Esto, poniendo un reemplazo a las variables POST que necesite tu PHP, claro.

Fuera de las pruebas PHP no se me ocurre otra cosa.

Cita:
Pareciera como si no estuviera entrando en el action del form si el usuario o el pass es incorrecto
Tenes algun validador del lado cliente?
  #3 (permalink)  
Antiguo 08/01/2010, 15:26
 
Fecha de Ingreso: junio-2009
Mensajes: 79
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: [jQuery] Problema extraño con form plugin

Hola mayid, tengo un validador pero solo me valida que los input esten llenos, funciona correctamente no hace el submit si alguno de los 2 campos no estan llenos:

Probe haciendo lo que me dijistes, deshabilite el script y parece que estoy llegando al fondo del problema, la pagina se comporta igual. Osea en los primeros 2 casos que mencione arriba la pagina de login vuelve a cargar, luego si me muestra la pagina dologin.php con el echo correspondiente (ENTER, ERROR, DISABLE). Voy a colocar el archivo dologin ademas de los input del form para que puedan verificar mejor:

FORMULARIO: (Estan dentro de una tabla, solo muestro la informacion relevante)
Código HTML:
Ver original
  1. <form id="form_login" name="form_login" method="post" enctype="multipart/form-data" action="dologin.php">
  2.  
  3.             <td class="labels"><label for="login_user">Login:</label></td>
  4.             <td class="inputs"><input id="login_user" name="login_user" type="text" /></td>
  5.  
  6.             <td class="labels"><label for="password_user">Password:</label></td>
  7.             <td class="inputs"><input id="password_user" name="password_user" type="password" /></td>
  8.  
  9. </form>

dologin.php
Código PHP:
Ver original
  1. $obj_login = new login;
  2.  
  3. if (($_REQUEST['login_user']) && ($_REQUEST['password_user'])){
  4.    
  5.     $arrLogin = $obj_login->confirm($_REQUEST['login_user'], $_REQUEST['password_user']);
  6.    
  7.     if ($arrLogin){
  8.         if ($arrLogin[0]['enabled_usuarios']==1){
  9.             $_SESSION['id_usuarios'] = $arrLogin[0]['id_usuarios'];
  10.             echo 'ENTER';
  11.         }else{
  12.             echo 'DISABLED';
  13.         }
  14.     }else{
  15.         echo 'ERROR';
  16.     }
  17. }

clase login:
Código PHP:
Ver original
  1. class login extends db_tools {
  2.    
  3.     function confirm($login_usuarios, $password_usuarios){
  4.        
  5.         $login_usuarios = stripslashes($login_usuarios); //Para proteger de inyecciones SQL
  6.         $password_usuarios = stripslashes($password_usuarios); //Para proteger de inyecciones SQL
  7.        
  8.         $login_usuarios = mysql_real_escape_string($login_usuarios); //Para proteger de inyecciones SQL
  9.         $password_usuarios = mysql_real_escape_string($password_usuarios); //Para proteger de inyecciones SQL
  10.        
  11.         $password_usuarios = md5($password_usuarios);
  12.  
  13.         $Query = "SELECT * FROM usuarios WHERE login_usuarios = '$login_usuarios' AND password_usuarios = '$password_usuarios'";
  14.        
  15.         return $this->select_tool($Query);
  16.    
  17.     }

select_tool es una funcion que me trae un arreglo de todas las filas de la tabla, no creo que sea necesario mostrarla.

Espero que con esta informacion puedan ayudarme. Gracias!
  #4 (permalink)  
Antiguo 08/01/2010, 15:40
 
Fecha de Ingreso: junio-2009
Mensajes: 79
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: [jQuery] Problema extraño con form plugin

Ya me di cuenta cual es el error :(

Al principio de dologin.php tengo un require

Código PHP:
Ver original
  1. require('lib/core.lib.php');

ese tiene todas las funciones que necesito en la aplicacion y este mismo lo llamo al principio de todas mis paginas excepto en la de index, el problema es que al principio de este core.lib.php tengo:

Código PHP:
Ver original
  1. //Iniciar sesion
  2.  
  3. //Si el usuario no esta logeado redireccionar la la pagina de login
  4. if (!($_SESSION['id_usuarios'])){
  5.     header('Location: index.php');
  6. }

Obviamente cuando el user y el pass es incorrecto me va a mandar a la pagina de index sin que pueda hacer mas nada (el resto de los include con las demas clases estan debajo de este if), asi que hasta que el user o el pass no es correcto no levanta la sesion y por ende no deja hacer mas nada.
  #5 (permalink)  
Antiguo 08/01/2010, 17:40
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: [jQuery] Problema extraño con form plugin

Me alegro lo solucionaras. Era evidentemente un tema de PHP.


Etiquetas: extraño, plugin, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:09.