Foros del Web » Programando para Internet » PHP »

Eliminar sessiones del servidor

Estas en el tema de Eliminar sessiones del servidor en el foro de PHP en Foros del Web. Hola, quiero hacer un par de cosillas con sessiones pero no soy capaz. Al registrarse un usuario en el sistema se genera una session que ...
  #1 (permalink)  
Antiguo 02/10/2007, 11:58
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 8 meses
Puntos: 0
Eliminar sessiones del servidor

Hola, quiero hacer un par de cosillas con sessiones pero no soy capaz. Al registrarse un usuario en el sistema se genera una session que se almacena en un fichero en el servidor, en el directorio "temp". La creo con:

Código PHP:
session_save_path ("./temp");
session_start(); 
Si el usuario sale del sistema como debe, es decir con un logout, elimino la session del servidor (se borra el fichero).

Código PHP:
unset($_SESSION['usuario']);
session_destroy(); 
Mi problema viene porque si el usuario sale a lo bruto (sin el logout), la session expira a los X minutos (o al menos eso creo), pero se queda en el servidor el fichero de la session.

¿Cómo puedo hacer para que al pasar X tiempo sin usar la aplicación o al salir "a lo bruto", se cierre la session y se elimine el fichero del servidor?, es decir, que el resultado sea el mismo que si hubiera hecho un logout. Necesito una solución "software", ya que no puedo cambiar nada en el php.ini.

Muchas gracias
Un saludo
__________________
Uno para todos y todos para uno
  #2 (permalink)  
Antiguo 02/10/2007, 12:07
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 16 años, 11 meses
Puntos: 4
Re: Eliminar sessiones del servidor

Hola, mira, no es muy aconsejable usar esto:

session_save_path ("./temp");

Ya que tú estas asignando una carpeta TEMP, la cual es server no sabe que es TEMP, te explico, si utilizas algo como:

Código PHP:
<?

session_start
(); 
$_SESSION['algo'] = 'datos';

?>
El servidor crea el archivo de sesion en su /temp, y el mismo se encarga de borrarlo automaticamente, y asi tu no t preocupas de borrarlo.

P.D: Cuando el usuario cierra la ventana del explorador, automaticamente se borra la sesión, asi q no t preocupes.

Mira acá


Saludos.
  #3 (permalink)  
Antiguo 03/10/2007, 04:01
 
Fecha de Ingreso: julio-2004
Mensajes: 117
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: Eliminar sessiones del servidor

Hola, gracias por responder. He estado leyendo el link que me sugeriste y he encontradoe esto....

Cita:
session.save_path define el argumento que se pasa al controlador de almacenamiento. Si elige el controlador de archivos por defecto, esta es la ruta donde los archivos se crean. Por defecto es /tmp. Si la profundidad de la ruta de session.save_path es mayor que 2, no se llevará a cabo la recolección de basura.

Aviso

Si lo deja apuntando a un directorio con permiso de lectura por el resto de usuarios, como /tmp (la opción por defecto), los demás usuarios del servidor pueden conseguir robar las sesiones obteniéndolas de la lista de archivos de ese directorio.
Eso es justamente lo que yo queria evitar al definir el "temp" como uno mío. De todas formas veo que puedes poner un "temp propio" cuya profudidad sea menor o igual que 2 (se supone que desde el raíz donde se cuelgan las páginas del servidor no?) y debería funcionar igual que si estuviera en el "temp por defecto". Yo tengo una profundidad de 4 (estoy en fase de pruebas), pero lo he probado con profundidad 2 y al cerrar el explorador todavía sigue allí.

Al final parece que me decantaré por dejar la carpeta por defecto si no da problemas.

Muchas gracias.
Un saludo
__________________
Uno para todos y todos para uno
  #4 (permalink)  
Antiguo 03/10/2007, 04:47
 
Fecha de Ingreso: febrero-2005
Ubicación: bcn - catalunya
Mensajes: 107
Antigüedad: 19 años, 1 mes
Puntos: 0
Re: Eliminar sessiones del servidor

siempre puedes usar las session por BD... a veces es mejor... :)
__________________
http://curiosobundo.com <-- blogging

curiosobundaje en este curioso mundo...
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 07:16.