Foros del Web » Programando para Internet » PHP »

Problema con sesiones

Estas en el tema de Problema con sesiones en el foro de PHP en Foros del Web. Hola a todos. Voy a plantear una duda a ver si alguien me la puede resolver. Bueno el problema es q tengo una tienda virtual ...
  #1 (permalink)  
Antiguo 12/05/2004, 17:59
 
Fecha de Ingreso: mayo-2004
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
Problema con sesiones

Hola a todos. Voy a plantear una duda a ver si alguien me la puede resolver.

Bueno el problema es q tengo una tienda virtual en PHP y una vez q un usuario entra en la misma se genera un sesion con sus datos. Entonces existe en mi tienda un link para abandonar la session mediante session_destroy pero tqmbien quiero q termine la sesion cuando el usuario cierre la ventana que tenia abierta con tienda. Asi digamos q cuando pase el timeout la session se destruya. He mirado el php.ini y el httpd.conf y he modificado algunos parametros pero no consigo q al cerrar el navegador y transcurrido un tiempo la session caduque. Necesito eso pq si no se me queda como si el usuario estuviera conectado y no me deja entrar de nuevo.

Si alguien supiera resolver esto, y q parametros hay q cambiar le agradeceria mucho q me respondiese.

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 13/05/2004, 07:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pon la configuración (php.ini) sobre sesiones que uses actualmente y describe como propaga el SID tu aplicación (por el URL? o en una cookie?)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 13/05/2004, 11:20
 
Fecha de Ingreso: mayo-2004
Mensajes: 3
Antigüedad: 13 años, 7 meses
Puntos: 0
el trozo referente a las sesiones del php.ini es:

[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.
session.save_path = D:\FoxServ\sessiondata

; Whether to use cookies.
session.use_cookies = 1


; 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 =

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

; Percentual probability that the 'garbage collection' process is started
; on every session initialization.
session.gc_probability = 1

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

; 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 =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; Set to {nocache,private,public} to determine HTTP caching aspects.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180

; use transient sid support if enabled by compiling with --enable-trans-sid.
session.use_trans_sid = 1

url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeent ry"


He seguido investigando y parece q asi al cerrar la ventana del navegador la sesion se cancela pero el fichero que hay referente a la misma en D:\Foxserv\sessionData no se elimina como es el caso de session_destroy();
Concretando mi problema explico un poco mas. yo tengo en una tabla de usuarios un campo booleano q indica si el usuario esta conectado o no. Es decir cuando entra lo pongo a 1 y si ese mismo usuario intenta entrar desde otra maquina no le deja pq hace la comprobacion de ese campo antes de entrar.
Por otro lado cuando el usuario hace logout con el session_destroy pongo ese campo de nuevo a 0 pa q pueda entrar la proxima vez. El problema esta en cuando cierre la ventana del navegador, q ya no se cuando se realiza y no puedo vovler a poner ese campo a 0. Se me queda a 1 y ya no puedo volver a entrar con ese usuario.
Si conceis alguna solucion os la agradeceria pq estoy parado por eso.
Gracias a todos:
  #4 (permalink)  
Antiguo 14/05/2004, 07:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Los problemas Con el archivo de sesión creado los resuelves con el ajuste de las directivas:

; Percentual probability that the 'garbage collection' process is started
; on every session initialization.
session.gc_probability = 1

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


Cita:
Por otro lado cuando el usuario hace logout con el session_destroy pongo ese campo de nuevo a 0 pa q pueda entrar la proxima vez. El problema esta en cuando cierre la ventana del navegador, q ya no se cuando se realiza y no puedo vovler a poner ese campo a 0. Se me queda a 1 y ya no puedo volver a entrar con ese usuario.
Esos problemas de "concurrencia" (usa el buscador de foro .. veras temas que hablan de ello) se suele solventar no con "flag" (1/0) sino guardando tiempos de ingreso al sistema y actualizarlos en cada llamada a una página de tu sistema para actualizar esa fecha/hora y así poder determinar tiempos considerados de "inactividad" del usuario para que tus rutinas puedan dejar entrar a ese usuario si el tiempo prederminado de "inactividad" fué superado.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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:21.