Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Iniciar sesión sin recargar la página.

Estas en el tema de Iniciar sesión sin recargar la página. en el foro de PHP en Foros del Web. Hola, estoy haciendo un formulario con el que iniciar sesión sin tener que recargar la pagina ya que es una molestia. Utilizando PHP Javascript etc.. ...
  #1 (permalink)  
Antiguo 10/03/2014, 13:13
VityOsma
Invitado
 
Mensajes: n/a
Puntos:
Iniciar sesión sin recargar la página.

Hola, estoy haciendo un formulario con el que iniciar sesión sin tener que recargar la pagina ya que es una molestia. Utilizando PHP Javascript etc..

Este es mi problema.
En una de las paginas de mi web tengo este formulario:

<div id="login">Entra
<form id="iniciar-sesion" method="post" onkeypress="if (event.keyCode == 13) iniciarSesion()">
<input type="text" id="usuario" name="usuario" placeholder="Usuario o email"/><br />
<input type="password" id="password" name="password" placeholder="Contraseña"/><br />
<input type="hidden" name="ruta-relativa" value="<?php echo $_SESSION['rutaRelativa']; ?>" />
<input type="button" id="iniciarsesionlyrics" onclick="iniciarSesion()" value="Iniciar sesión" />
</form></div>
<!--A PARTIR DE AQUI LOS DATOS DEL USUARIO UNA VEZ HAYA INICIADO SESION-->
<div id="salir" style="display:none"><a href="php/salir.php">Exit</div>
<div id="user" style="display:none"><a href="#"><?php echo $_SESSION['loguser']; ?></a></div>

Que llama a este script

function iniciarSesion(){
if(validaLogin()){ // Primero validará el formulario.
$.post(ruta+"pluggins/menus/login/iniciar-sesion.php",$("#iniciar-sesion").serialize(),function(res){
$("#registro").fadeOut("slow"); // Hacemos desaparecer el div "formulario" con un efecto fadeOut lento.
$("#login").fadeOut("slow");
if(res == 1){
$("#exitoLog").delay(500).fadeIn("slow"); // Si hemos tenido éxito, hacemos aparecer el div "exito" con un efecto fadeIn lento.
$("#salir").delay(500).fadeIn("slow");
$("#user").delay(500).fadeIn("slow");
alert('mostrar');
} else {
$("#registro").delay(500).fadeIn("slow");
$("#login").delay(500).fadeIn("slow"); // Si no, lo mismo, pero haremos aparecer el div "fracaso"
alert('sd');
}
});
}
}//);

Hasta aqui todo bien, al iniciar sesion correctamente el archivo PHP al que llama jQuery me devulve un 1 y por lo cual oculta las capas de iniciar sesion para mostrar las capas salir y user, indicando que la sesion se ha iniciado, el problema es que en la capa user:
<?php echo $_SESSION['loguser']; ?>
El nombre del usuario que esta almacenado en la variable de sesion no se muestra, ya que esta capa se habia cargado antes de iniciar la sesion aunque estaba oculta, lo unico que he hecho es mostrarla, y tiene el fallo de no encontrar esta variable.

Lo que necesito es que al iniciar sesion se cargue la capa en el servidor utilizando la variable que acabamos de crear al iniciar sesion y no que se muestre la capa que ya se habia creado antes de iniciarla y por lo tanto tiene un fallo.

No se si me he expicado, espero que si. Gracias por vuestras respuestas.
  #2 (permalink)  
Antiguo 10/03/2014, 13:24
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: Iniciar sesión sin recargar la página.

La forma de hacer esto es con Ajax, sólo con JS no podrás.
Busca información en google que hay mucha pero vamos, la idea es:
1. La página se carga sin la información de usuario (No utilices display:none ya que eso se puede modificar en el navegador y al final vas dejando puertas por dónde inyectar código malicioso).
2. El usuario se identifica.
3. El formulario envía una petición a una página externa mediante ajax.
4. La página externa verifica los datos y devuelve la información que quieras.
5. Imprimes esa información dónde desees.

Buscando verás que puedes insertar código directamente en la web utilizando Ajax+JS y los datos vendrán validados de un PHP externo.

Suerte.
__________________
Dicen que las personas piensan en su lengua materna, yo lo hago en PHP
  #3 (permalink)  
Antiguo 12/03/2014, 08:47
VityOsma
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Iniciar sesión sin recargar la página.

Vale, ya lo he hecho a mi manera, lo único que lo preguntaba por si podía mandar alguna variable entre los archivos y ahorrarme a utilizar tantos para que me sea más fácil ver lo que hace cada uno y que no se me vaya de las manos, ya esta solucionado, gracias.

Etiquetas: formulario, registro, sesión, variable
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 15:52.