Foros del Web » Programando para Internet » PHP »

cerrar sesion al cerrar el navegador

Estas en el tema de cerrar sesion al cerrar el navegador en el foro de PHP en Foros del Web. Tengo una dudo a las sesiones en php, estoy trabajando con este script para validar la creación de la sesion @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver ...
  #1 (permalink)  
Antiguo 20/08/2016, 21:35
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
cerrar sesion al cerrar el navegador

Tengo una dudo a las sesiones en php,

estoy trabajando con este script para validar la creación de la sesion
Código PHP:
Ver original
  1. <?php
  2. include ('includes/conexion.php');
  3.  
  4. //Recibimos las variables
  5. $usuario = $_POST['usuario'];
  6. $pass = md5($_POST['password']);
  7.  
  8.  
  9.  
  10. if(empty($usuario) || empty($pass)){
  11.   header("Location: index.html");
  12.   exit();
  13. } else
  14. {
  15. //verificamos que el usuario exista y coincida con la contraseña
  16.  
  17.   $result = mysql_query("SELECT * FROM usuarios WHERE usuario LIKE '$usuario' AND password LIKE '$pass'");
  18.   $count = mysql_num_rows($result);
  19. //Si el usuario no existe, enviamos a login
  20.   if ($count == '0') {
  21.     header("Location: index2.php");
  22.   }else {
  23. //si el usuario y contraseña existen
  24.   while ($row = mysql_fetch_assoc($result)) {
  25.     session_start();
  26.     $_SESSION['usuario'] = $row['usuario'];
  27.     $_SESSION['nivel'] = $row['nivel'];
  28.  
  29.     if ($_SESSION['nivel'] == '1') {
  30.       header("Location: menu_admin.php");
  31.     } elseif ($_SESSION['nivel'] == '2') {
  32.       header("Location: menu.php");
  33.     }
  34.  
  35.  
  36.   }
  37.  
  38.  
  39.  
  40. }
  41. }
  42. /*
  43. if($row = mysql_fetch_array($result)){
  44.  
  45.   if($row['password'] ==  $pass){
  46.  
  47.    
  48.     if($row['nivel'] == '1') {
  49.  
  50.     session_start();
  51.    
  52.     $_SESSION['usuario'] = $usuario;
  53.    
  54.     header("Location: menu_admin.php");  
  55.     }
  56.     elseif ($row['nivel' == '2']) {
  57.      session_start();
  58.    
  59.     $_SESSION['usuario'] = $usuario;
  60.    
  61.     header("Location: menu.php");  
  62.     }
  63.  
  64.   }else{
  65.  
  66.     header("Location: index2.php");
  67.  
  68.     exit();
  69.   }
  70.  
  71. }else{
  72.  
  73.   header("Location: index2.php");
  74.  
  75.   exit();
  76. }
  77. */
  78.  
  79. ?>

Luego entonces, para validar permisos en cada script tengo

Código PHP:
Ver original
  1. <?php
  2. include ('includes/conexion.php');
  3. if (isset($_SESSION['usuario'])){
  4.  
  5.  ?>
  6. ...mi codigo...
  7. <?php
  8. }
  9. else {
  10.     echo "Debe iniciar sesión para acceder a este contenido, <a href='index.php'>haga click aqui</a>";
  11. }
  12.  ?>

para cerrar sesión tengo un archivo llamado salir.php que tiene este código
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.    if(!isset($_SESSION['usuario']))
  5.    {
  6.         echo "No hay ninguna sesion iniciada";
  7. //esto ocurre cuando la sesion caduca.
  8.        
  9.    }
  10.    else
  11.    {
  12.     session_unset();
  13.      session_destroy();
  14.         echo "Has cerrado la sesion";
  15. echo "<meta content='2;URL=index.php' http-equiv='REFRESH'> </meta>";
  16.        
  17.    }
  18.  
  19.  
  20.    
  21. ?>

Todo funciona bien, sin embargo, cuando cierro el navegador (y no he cerrado sesión con salir.php) y vuelvo a abrir el navegador, la sesión está abierta.

mi pregunta es:

¿cómo puedo lograr que apenas el usuario cierre el navegador se cierre la sesión también ?

he revisado el php.ini y está así

Código PHP:
Ver original
  1. session.use_trans_sid = 0
  2. session.use_only_cookies = 1
  3. session.cookie_lifetime=0
__________________
Say no more.......
  #2 (permalink)  
Antiguo 21/08/2016, 22:33
 
Fecha de Ingreso: enero-2013
Ubicación: Santa Fe, VT
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: cerrar sesion al cerrar el navegador

Tenes que hacerlo por el Front-End, vas a necesitar usar Javascript (jquery) y estudiar como usar el evento que se dispara cuando se cierra el navegador.
Lamento no poder darte una respuesta solida en este momento pero nunca use eso.

Otra posibilidad es no almacenar la session en coockies y usarla por Url. Busca información sobre "session.use_trans_sid", ojala te puedan ayudar. Suerte

Etiquetas: cerrar, html, mysql, navegador, select, usuarios, 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 16:38.