Foros del Web » Programando para Internet » PHP »

Sesiones con php

Estas en el tema de Sesiones con php en el foro de PHP en Foros del Web. Hola gente....mi consulta es la siguiente: Al cerrar la sesion iniciada por un usuario, redirecciono el navegador para salir (log out).Esto lo cumple bien, pero ...
  #1 (permalink)  
Antiguo 04/09/2012, 15:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Sesiones con php

Hola gente....mi consulta es la siguiente:
Al cerrar la sesion iniciada por un usuario, redirecciono el navegador para salir (log out).Esto lo cumple bien, pero al cerrar la ventana actual del navegador, queda expuesta la sesion iniciada por el usuario, lo cual deseo que no ocurra, por cuestiones de seguridad.
Para cerrar una sesion, incorporo un link en la cuenta denominado salir, el cual activa un script php cuyo contenido es algo asì:

<?php
session_name();
session_start();
unset($_session["usrio"]);
unset($_SESSION["clave"]);
session_destroy();
header("Location:http://www.pagina.com");
?>

Como dije, el resultado, es la redireccion hacia la pagina seleccionada, pero si cierro la ventana de esa pagina, queda expuesta en la ventana anterior la sesion que se desea finalizar.
Es posible solucionar esto con el borrado de las cookies?, aunque la sesion se inicia sin el envìo de las mismas.

Ojala tengan alguna sugerencia.

Gracias y saludos
  #2 (permalink)  
Antiguo 04/09/2012, 19:07
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Sesiones con php

hola alecros, podrias usar algo de javascript para detectar cuando el navegador se cierra, pero aun asi no serviria de mucho puesto que si se apaga la pc o algo asi la secion no se destruira, lo que puedes hacer es verificar la secion cada 10 minutos o algo menor y si la ventana no esta abierta eliminas la secion.

Código PHP:
Ver original
  1. <?php
  2. //iniciamos la sesión
  3. session_name("loginUsuario");
  4.  
  5. //antes de hacer los cálculos, compruebo que el usuario está logueado
  6. //utilizamos el mismo script que antes
  7. if ($_SESSION["autentificado"] != "SI") {
  8.     //si no está logueado lo envío a la página de autentificación
  9.     header("Location: index.php");
  10. } else {
  11.     //sino, calculamos el tiempo transcurrido
  12.     $fechaGuardada = $_SESSION["ultimoAcceso"];
  13.     $ahora = date("Y-n-j H:i:s");
  14.     $tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));
  15.  
  16.     //comparamos el tiempo transcurrido
  17.      if($tiempo_transcurrido >= 600) {
  18.      //si pasaron 10 minutos o más
  19.       session_destroy(); // destruyo la sesión
  20.       header("Location: index.php"); //envío al usuario a la pag. de autenticación
  21.       //sino, actualizo la fecha de la sesión
  22.     }else {
  23.     $_SESSION["ultimoAcceso"] = $ahora;
  24.    }
  25. }
  26. ?>

el codigo fue sacado de http://www.desarrolloweb.com/articulos/2022.php
espero te sirva saludos
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #3 (permalink)  
Antiguo 04/09/2012, 20:19
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Sesiones con php

Hola NSD, muy util esto...lo voy a mirar.
Gracias por responder.

Saludos
  #4 (permalink)  
Antiguo 05/09/2012, 11:24
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Sesiones con php

Hola...la ùltima respuesta es interesante como un medio màs de seguridad, pero mi consulta es como redireccionar sin que haya vuelta atràs con las ventanas del navegador.Es decir, que al redireccionar por cierre (ya sea por tiempo, o por desicion del usuario), no haya forma de visualizar la sesion antes iniciada, a menos que se brinden nuevamente los datos para el ingreso (log in), ya que el navegador, aunque cumpla con el redireccionamiento, deja subventanas abiertas, mostrando la ultima sesion.

Nuevamente gracias por responder
  #5 (permalink)  
Antiguo 05/09/2012, 13:47
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: Sesiones con php

si quieres hacer eso tendras que usar cookies y javascript puesto que el problema no es del lado del server sino del cliente.

por si no te convences te invito a que hagas esto (seguramente tienes facebook o hotmail o alguna red social) logueate en tu red (ejemplo facebook) en una pestaña abre tu perfil y en otra pestaña (o ventana) abre ultimas noticias, luego desde tu perfil cierra la secion, y abre la otra pestaña/ventana que tienes minimizada. veras que te tira un cartel de alerta. supongo que eso es lo que quieres lograr. Pregunta en javascript como hacerlo que seguramente te orientaran mas y mejor. pero aun asi lo que te pase es INDISPENSABLE como seguridad.

Te invito a probar esto tambien a ver que opinas, usa safari para que lo veas mas facil, abre facebook en una pestaña ultimas noticias y en la otra tu perfil. en la de ultimas noticias ve al menu desarrollo y desabilita javascript. veras que por ejemplo ya no puedes abrir la ventana del chat y muchas otras cosas, si la ventana se recarga veras la advertencia "For a better experience on Facebook, enable JavaScript in your browser, or switch to our mobile site."
pero la pagina se vera. ahora en la otra pestaña cierra tu secion como isiste anteriormente.

al volver a tu pagina de ultimas noticias la veras completita sin problemas.

Conclusion del experimento: Si ubiese una solucion definitiva y total ¿Crees que facebook no la estaria usando? NUNCA tendras el control total sobre el navegador del visitante y esto que pides es un ejemplo de las limitaciones, pero insisto, revisa javascript y cookies. en la cookie guardas el estado de secion y cada 1segundo lo revisas, si es 1 (o el valor que le des) no hace nada, si esa cookie no existe o es 0 (por dar un ejemplo) redireccionas o impides el acceso o mustras un cartel como hace facebook o lo que se te apetezca.

lamento no poder ayudarte mas saludos.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #6 (permalink)  
Antiguo 05/09/2012, 14:45
 
Fecha de Ingreso: febrero-2010
Mensajes: 153
Antigüedad: 14 años, 1 mes
Puntos: 3
Respuesta: Sesiones con php

Hola...entiendo...voy a investigar todo esto....
Gracias por el dato y tu tiempo.

Saludos

Etiquetas: sesiones, usuarios
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 14:00.