Foros del Web » Programando para Internet » PHP »

Limpiar variables sesion

Estas en el tema de Limpiar variables sesion en el foro de PHP en Foros del Web. Tengo algunas variables $_SESSION que sobreviven (eso es lo que quiero) al fín de la sesión de un usuario. Basicamente controlan que no se vuelva ...
  #1 (permalink)  
Antiguo 12/11/2008, 09:37
Avatar de C_Cornell  
Fecha de Ingreso: agosto-2008
Ubicación: Santander
Mensajes: 62
Antigüedad: 15 años, 8 meses
Puntos: 0
Limpiar variables sesion

Tengo algunas variables $_SESSION que sobreviven (eso es lo que quiero) al fín de la sesión de un usuario.
Basicamente controlan que no se vuelva atras con el navegador a partes en las que se envía un formulario (para que no se procese de nuevo)

cerrarSesionUsuario.php
Código PHP:
if(isset($_SESSION)){
    
$conservar $_SESSION['prohibir'];
    
session_unset();    
    
$_SESSION['prohibir'] = $conservar;

$_SESSION['prohibir'] Es una array que contiene claves aleatorias que se comparan con las paginas anteriores, para no permitir volver atras en algunos puntos del sistema.

Todo va bien y eso: Pero me pregunto. No se acabarán acumulando muchas variables sesion en el servidor. Como podría gestionar una limpieza de esas variables?? y en que momento puedo estar seguro de que al borrarlas no afectará a la seguridad de mi sistema.

Alguna aportación
  #2 (permalink)  
Antiguo 12/11/2008, 10:20
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: Limpiar variables sesion

Hola C_Cornell,

Todas las variables de sesion se guardan en un archivo juntas, y por cada archivo = a cada sesion, si tu ves en tu php.ini hay una directiva llamada session.gc_probaility y session.gc_maxlifetime, estas controlan que cuando se abra el Garbage Collector de PHP si ve archivos basura los elimine. Es por eso que si tu dejas archivos son autoeliminados por PHP.

Saludos.
  #3 (permalink)  
Antiguo 12/11/2008, 10:29
Avatar de C_Cornell  
Fecha de Ingreso: agosto-2008
Ubicación: Santander
Mensajes: 62
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Limpiar variables sesion

Hola Gator:

En este caso la 'sesion del usuario' no es igual a la 'sesion php'.

Vamos que cuando se desconecta el usuario, no hago un session_destroy()

Solo borro todos las variables que se han establecido por el uso del sistema por parte de usuario menos de aquellas que controlan la seguridad.

Entonces el archivo ese del que tu hablas con todas la variables no se destruye...de hecho, haciendo pruebas si me desconecto con un usuario y me reconecto con otro las variables esas de 'control' siguen ahí impidiendome hacer cosas 'malas'.

No se si me explico, quizas no te entendi muy bien tampoco
  #4 (permalink)  
Antiguo 12/11/2008, 10:44
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: Limpiar variables sesion

Lo que pasa es que como dices, no llamas a session_destroy() por eso si vuelves a entrar en un tiempo menor a session.gc_maxlifetime, y a session.maxlifetime, puedes recuperar los datos, es por eso que debes de modificar las variables correctamente.

Saludos.
  #5 (permalink)  
Antiguo 12/11/2008, 10:58
Avatar de C_Cornell  
Fecha de Ingreso: agosto-2008
Ubicación: Santander
Mensajes: 62
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Limpiar variables sesion

Mmm.... si claro, eso es lo que quiero y hace el sistema. Lo que pasa es que imagina que desde el mismo equipo se conectan y desconectan cada muy poco tiempo usuarios al sistema. Entonces esas variables de 'control' nunca se borrarian y se irián incrementando... Es un caso rebuscado... pero bueno
  #6 (permalink)  
Antiguo 12/11/2008, 11:27
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: Limpiar variables sesion

Pues entonces borralas tu expresamente en el logout usando $_SESSION = array().

Saludos.
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 03:32.