Foros del Web » Programando para Internet » PHP »

Caducar sessiones al cerrar el navegador

Estas en el tema de Caducar sessiones al cerrar el navegador en el foro de PHP en Foros del Web. Buenas tardes, les escribo porque tengo un problema con las sessiones en php y no encuentro solucion. El problema que tengo es que cuando cierro ...
  #1 (permalink)  
Antiguo 22/09/2009, 09:11
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Caducar sessiones al cerrar el navegador

Buenas tardes, les escribo porque tengo un problema con las sessiones en php y no encuentro solucion.

El problema que tengo es que cuando cierro el navegador, y lo vuelvo abrir mi sesion sigue existiendo.

Por ejemplo en mi pagina login.php tengo el siguiente codigo

Código PHP:
session_start();
       if ( (!
$_SESSION['estado'])) {
         } else {
          
header("Location: carga.php"); 
         } 

y en mi pagina carga.php el siguiente

Código PHP:
session_start();
       if ( (!
$_SESSION['estado'])) {
           
header("Location: login.php");   // largo de aqui !!
         
} else {
         
         } 
Pero cuando me logueo, y despues cierro el explorador, cuando vuelvo a entrar a carga.php me deja entrar, y no deberia dejarme.

Les agradezco su ayuda de antemanto.

Adjunto la configuracion de mi php.ini

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; The path can be defined as:
;
; session.save_path = "N;/path"
;
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
; session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.

session.save_path = "C:\xampp\tmp"

; Whether to use cookies.

session.use_cookies = 1


;session.cookie_secure =

; This option forces PHP to fetch and use a cookie for storing and maintaining
; the session id. We encourage this operation as it's very helpful in combatting
; session hijacking when not specifying and managing your own session id. It is
; not the end all be all of session hijacking defense, but it's a good start.

session.use_only_cookies = 0

; Name of the session (used as cookie name).

session.name = PHPSESSID

; Initialize session on request startup.

session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.

session.cookie_lifetime = 0

; The path for which the cookie is valid.

session.cookie_path = /

; The domain for which the cookie is valid.

session.cookie_domain =

; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.

session.cookie_httponly =

; Handler used to serialize data. php is the standard serializer of PHP.

session.serialize_handler = php

; Defines the probability that the 'garbage collection' process is started
; on every session initialization. The probability is calculated by using
; gc_probability/gc_divisor. Where session.gc_probability is the numerator
; and gc_divisor is the denominator in the equation. Setting this value to 1
; when the session.gc_divisor value is 100 will give you approximately a 1% chance
; the gc will run on any give request.
; Default Value: 1
; Development Value: 1
; Production Value: 1

session.gc_probability = 1

; Defines the probability that the 'garbage collection' process is started on every
; session initialization. The probability is calculated by using the following equation:
; gc_probability/gc_divisor. Where session.gc_probability is the numerator and
; session.gc_divisor is the denominator in the equation. Setting this value to 1
; when the session.gc_divisor value is 100 will give you approximately a 1% chance
; the gc will run on any give request. Increasing this value to 1000 will give you
; a 0.1% chance the gc will run on any give request. For high volume production servers,
; this is a more efficient approach.
; Default Value: 100
; Development Value: 1000
; Production Value: 1000
session.gc_divisor = 100

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.

session.gc_maxlifetime = 1440

; NOTE: If you are using the subdirectory option for storing session files
; (see session.save_path above), then garbage collection does *not*
; happen automatically. You will need to do your own garbage
; collection through a shell script, cron entry, or some other method.
; For example, the following script would is the equivalent of
; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
; cd /path/to/sessions; find -cmin +24 | xargs rm

; PHP 4.2 and less have an undocumented feature/bug that allows you to
; to initialize a session variable in the global scope, even when register_globals
; is disabled. PHP 4.3 and later will warn you, if this feature is used.
; You can disable the feature and the warning separately. At this time,
; the warning is only displayed, if bug_compat_42 is enabled. This feature
; introduces some serious security problems if not handled correctly. It's
; recommended that you do not use this feature on production servers. But you
; should enable this on development servers and enable the warning as well. If you
; do not enable the feature on development servers, you won't be warned when it's
; used and debugging errors caused by this can be difficult to track down.
; Default Value: On
; Development Value: On
; Production Value: Off

session.bug_compat_42 = On

; This setting controls whether or not you are warned by PHP when initializing a
; session value into the global space. session.bug_compat_42 must be enabled before
; these warnings can be issued by PHP. See the directive above for more information.
; Default Value: On
; Development Value: On
; Production Value: Off

session.bug_compat_warn = On

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.

session.referer_check =

; How many bytes to read from the file.

session.entropy_length = 0

; Specified here to create the session id.

;session.entropy_file = /dev/urandom
session.entropy_file =


;session.entropy_length = 16

; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.

session.cache_limiter = nocache

; Document expires after n minutes.

session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.

session.use_trans_sid = 0

; Select a hash function for use in generating session ids.
; Possible Values
; 0 (MD5 128 bits)
; 1 (SHA-1 160 bits)

session.hash_function = 0

; Define how many bits are stored in each character when converting
; the binary hash data to something readable.
; Possible values:
; 4 (4 bits: 0-9, a-f)
; 5 (5 bits: 0-9, a-v)
; 6 (6 bits: 0-9, a-z, A-Z, "-", ",")
; Default Value: 4
; Development Value: 5
; Production Value: 5

session.hash_bits_per_character = 5

; The URL rewriter will look for URLs in a defined set of HTML tags.
; form/fieldset are special; if you include them here, the rewriter will
; add a hidden <input> field with the info which is otherwise appended
; to URLs. If you want XHTML conformity, remove the form entry.
; Note that all valid entries require a "=", even if no value follows.
; Default Value: "a=href,area=href,frame=src,form=,fieldset="
; Development Value: "a=href,area=href,frame=src,input=src,form=fakeent ry"
; Production Value: "a=href,area=href,frame=src,input=src,form=fakeent ry"

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fields et="
  #2 (permalink)  
Antiguo 22/09/2009, 09:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Caducar sessiones al cerrar el navegador

Esta raro. Conforme a lo que tienes declarado en el php.ini estas indicando que se eliminen las sesiones una vez hayas cerrado el navegador.

Primero ¿estas seguro que estas cerrando completamente el navegador y no una pestaña?
Segundo trata de eliminar todo el cache y los cookies y luego vuelve a hacer los pasos de conectarte para ver si te pasa lo mismo.

Bueno me dejas saber
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 22/09/2009, 09:41
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Caducar sessiones al cerrar el navegador

Sip, si cierro el navegador, ya hice lo que me dijiste y no funciona.

Lo eh probado en ie8 y en firefox 3.5

Pero cuando lo pruebo en google chrome si se borra cuando se cierre la ventana :(
  #4 (permalink)  
Antiguo 22/09/2009, 10:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Caducar sessiones al cerrar el navegador

Haz una prueba pequeña. Crea un archivo llamado
a.php
Código PHP:
Ver original
  1. <?php
  2. $_SESSION["c"] = "value";
  3. header("Location: b.php");

b.php
Código PHP:
Ver original
  1. <?php
  2. echo $_SESSION["c"];
Lo que vas a hacer es visitar http://localhost/a.php este te va redireccionar a b.php y te va a traer un valor. Luego que lo hagas cierras el navegador y luego vas a ir a http://localchost/b.php directamente y dime si te sale el valor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 22/09/2009, 10:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Caducar sessiones al cerrar el navegador

Revisa que no tengas ninguna instancia del explorador abierta, como te dice abimaelrc, puede que tengas abierta alguna sesión, si es posible reinicia la computadora y prueba nuevamente.

Saludos.
  #6 (permalink)  
Antiguo 22/09/2009, 11:28
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Caducar sessiones al cerrar el navegador

Hice la prueba q mencionaste y si cogio el valor, ya reinicie mi pc y sigo teniendo el mismo problema
  #7 (permalink)  
Antiguo 22/09/2009, 11:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Caducar sessiones al cerrar el navegador

Pero, indicaste que si cogio el valor. ¿Pero hiciste todos los pasos y como quiera te sigue mostrando el valor cuando cierras el navegador y vas directamente al b.php?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 22/09/2009, 14:53
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Caducar sessiones al cerrar el navegador

sip, como quiera me sigue mostrando el valor cuando cierro el navegador y voy directamente al b.php
  #9 (permalink)  
Antiguo 22/09/2009, 14:59
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Caducar sessiones al cerrar el navegador

en que carpeta guardas tus sesiones? ... la directiva session_path debe tener la misma ruta
__________________
Quitenme la vida pero no la bebida.
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 12:23.