Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2016, 21:35
Avatar de el_cesar
el_cesar
 
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años
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.......