Foros del Web » Programando para Internet » PHP »

cerrar sesiones

Estas en el tema de cerrar sesiones en el foro de PHP en Foros del Web. Que tal buenas noches. Tengo una pregunta ojala alguien pudiera ayudarme. Necesito saber como se le hace para que desde la administración de Apache cerrar ...
  #1 (permalink)  
Antiguo 28/02/2009, 19:57
 
Fecha de Ingreso: octubre-2003
Mensajes: 41
Antigüedad: 20 años, 5 meses
Puntos: 0
cerrar sesiones

Que tal buenas noches.

Tengo una pregunta ojala alguien pudiera ayudarme.

Necesito saber como se le hace para que desde la administración de Apache cerrar todas las sesiones que haya vivas.

Yo se que en IIS (servidor que ejecuta las paginas ASP) al parar o reiniciar el servicio todas las sesiones que estan en ese momento vivas se mueren. Bueno pues algo asi necesito hacer pero segun mis pruebas ni reiniciando Apache, ni MySql es mas ni reinciando el servidor o equipo las sesiones mueren, que debo hacer para lograr lo que requiero.


De ante mano agradesco su ayuda, gracias.
  #2 (permalink)  
Antiguo 28/02/2009, 20:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: cerrar sesiones

Hola edu0072000,

¿Te refieres a las sesiones de PHP $_SESSION?. Si es así no hay forma de controlarlo usando el motor principal de Sesiones (archivos de sesión) ya que estos se rastrean con una cookie, por lo que aunque reinicies el servidor Apache estas existirán.

Lo que debes de hacer en dado caso es un script que borre todos los archivos en la carpeta definida por session.save_path. Con esto "limpiaras" todas las sesiones que esten en disco.

Otra opción es cambiar el motor de sesiones usando session_set_save_handler, y guardarlas en una base de datos y borrar la tabla de sesiones.

Saludos
  #3 (permalink)  
Antiguo 28/02/2009, 21:10
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: cerrar sesiones

O podrías tener en una tabla de tu base de datos el id de las sesiones existentes, y un campo adicional "reset" que será 0 de forma predeterminada. En cada script que usa una sesión compruebas primero, usando el id de sesión, el valor de ese campo en la tabla de la base de datos. Si es 1, entonces "fuerzas" al script a destrozar la sesión. De esta manera puedes controlar cada una de las sesiones independientemente, simplemente guardando sus respectivos ids en esa tabla y definiendo comportamientos en campos adicionales.

Código php:
Ver original
  1. $sql = "SELECT reset FROM sesiones_control WHERE session_id = " . session_id();
  2. $r = mysql_query($sql);
  3.  
  4. $destrozar_sesion = mysql_result($r, 0);
  5.  
  6. if($destrozar_sesion == 1) {
  7.     header('Location: algo.php');
  8.     exit;
  9. }

Usando esa lógica puedes establecer diferentes acciones que se realizarán para cada usuario/sesión activa.

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 04:08.