Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Login con ajax

Estas en el tema de Login con ajax en el foro de Javascript en Foros del Web. Hola como están..Por favor me podrían guiarme un poco con lo siguiente. Tengo un login con jquery funciona muy bien, pero se me ocurrió cambiarlo ...
  #1 (permalink)  
Antiguo 04/11/2015, 17:39
 
Fecha de Ingreso: mayo-2015
Mensajes: 47
Antigüedad: 8 años, 11 meses
Puntos: 0
Información Login con ajax

Hola como están..Por favor me podrían guiarme un poco con lo siguiente.

Tengo un login con jquery funciona muy bien, pero se me ocurrió cambiarlo para hacerlo con ajax, de la siguiente manera:

Esta parte es la final del html:

Código HTML:
Ver original
  1. <div id="error" style="display:none;"></div>
  2.  
  3. <input type="button" id="login" name="login" onclick="javascript:validar_campos();" class="button button-primary" value="Ingresar"/>

Esta parte es del ajax:

Código Javascript:
Ver original
  1. function enviar_validar(){
  2.     divResultado = document.getElementById('error');   
  3.     cedula=document.ingreso_sistema.cedula.value;
  4.     contrasena=document.ingreso_sistema.contrasena.value;
  5.     ajax=objetoAjax();
  6.     ajax.open("POST", "login_prueba/validacion_datos.php",true);
  7.     ajax.onreadystatechange=function() {
  8.         if (ajax.readyState==4) {
  9.             //mostrar resultados en esta capa
  10.             divResultado.innerHTML=ajax.responseText
  11.             divResultado.style.display='block';    
  12.         }
  13.     }
  14.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  15.     ajax.send("cedula="+cedula+"&contrasena="+contrasena)
  16. }

El código php

Código PHP:
Ver original
  1. <?php
  2. include("db.php");
  3. if(isSet($_POST['cedula']) && isSet($_POST['contrasena']))
  4. {
  5. // username and password sent from Form
  6. $cedula=$_POST['cedula'];
  7. $contrasena=$_POST['contrasena'];
  8. $sql="SELECT * FROM empleado WHERE contrasena_empleado='$contrasena' and ci_empleado='$cedula'";
  9. $res=mysql_query($sql,$con) or die (mysql_error());
  10. if(mysql_num_rows($res)==1){
  11. $_SESSION['login_user']=$cedula;
  12. header("location:Administrador/inicio.php");  
  13. }else{
  14.    
  15. $sql_01="SELECT * FROM cliente WHERE contrasena_cliente='$contrasena' and correo_cliente='$cedula'";
  16. $res_01=mysql_query($sql_01,$con) or die (mysql_error());
  17.   if(mysql_num_rows($res_01)==1){
  18.  $_SESSION['login']=$cedula;
  19. header("location:Cliente/index.php");
  20.   }else{
  21.     echo "<div id='nerror'>";
  22.       echo "ERROR: Datos incorrectos";
  23.     echo "</div>";
  24.     echo "<br/>";  
  25.     }
  26.  
  27.  
  28.  }
  29.  
  30.  
  31.  
  32. }
  33. ?>

La validación me hace muy bien, el problema es que al pasar el login, la pagina siguiente se carga en:

<div id="error" style="display:none;"></div>

Esto por la misma forma de realizar con ajax.

Pero abría forma si pasa el login, que se vaya a la otra pagina sin necesidad de cargarse en el:

<div id="error" style="display:none;"></div>

Probé con javascript, con el window.load en php, pero no funciona.

Gracias por su paciencia y su tiempo..

Última edición por EmilianoEmiliano; 04/11/2015 a las 18:06
  #2 (permalink)  
Antiguo 04/11/2015, 23:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Login con ajax

Podrías devolver un array con dos valores; uno que sea un número o un mensaje cualquiera y otro que sea el mensaje a mostrar o la ruta hacia la cual se redirigirá al usuario. Una vez que recibas la respuesta, verificas el primer valor y si este indica que todo va bien, realizas la redirección mediante el método window.location, caso contrario, muestras el mensaje en el contenedor.

Código PHP:
Ver original
  1. //Si todo está bien
  2. $respuesta = [
  3.     'codigo' => 1,
  4.     'mensaje' => 'ejemplo.php'
  5. ];
  6.  
  7. //Caso contrario
  8. $respuesta = [
  9.     'codigo' => 2,
  10.     'mensaje' => 'El mensaje de error'
  11. ];
  12.  
  13. //Devuelves la respuesta en un objeto JSON
  14. echo json_encode($respuesta);

Código Javascript:
Ver original
  1. ajax.onreadystatechange = function(){
  2.     if (ajax.readyState == 4 && ajax.status == 200){
  3.         //Recogemos la respuesta y la parseamos a JSON
  4.         var respuesta = JSON.parse(ajax.responseText);
  5.  
  6.         //Si todo va bien, se redirecciona
  7.         if (respuesta.codigo == 1){
  8.             window.location = respuesta.mensaje;
  9.         }
  10.         //Caso contrario
  11.         else{
  12.             divResultado.innerHTML = respuesta.mensaje;
  13.             divResultado.style.display = "block";
  14.         }
  15.     }
  16. };

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 05/11/2015, 12:17
 
Fecha de Ingreso: mayo-2015
Mensajes: 47
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: Login con ajax

Gracias por indicarme como debo manejar este tipo de situaciones, lo solucione con su guía.......

Etiquetas: ajax, funcion, html, input, login, php, select
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 22:36.