2009-08-08 16 views
6

me gustaría obtener la lista de sesión del localhost.So, me escribió

session_start(); 
print_r($_SESSION); 

de acceso actualmente es two.one persona es de otro PC y el último está alojado pc.But la única sesión de PC alojada se muestra. En realidad, me gustaría obtener toda la lista de usuarios de la sesión.

+0

pregunta y asnwers similares disponibles aquí: http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php –

+0

Estoy de acuerdo con la mentalidad general de los encuestados. Parece que lo que estás buscando es una tecnología diferente. Puedo sugerir sockets web. –

Respuesta

4

Las sesiones están aisladas entre sí. La sesión de un usuario no tiene acceso a la sesión de otro usuario. La variable $_SESSION hace referencia solo a la sesión del usuario actual.

No creo que haya una manera de acceder a la sesión de un usuario diferente, aparte de saber dónde se almacenan físicamente los archivos de sesión en el disco y analizarlos a mano. TENGA EN CUENTA QUE ESTO NO ES GENERALMENTE ALGO QUE QUIERE HACER.

+0

cómo hacer para obtener toda la sesión? de alguna manera? –

1

No estoy seguro de lo que está preguntando, pero creo que está buscando otra sesión de otro usuario. Si este es el caso, entonces no lo recomendaría y no es realmente posible. Las sesiones son individuales para cada sesión del navegador (a menos que se especifique lo contrario a través de las cookies).

Si está pidiendo recuperar sus sesiones de su propio usuario desde otra computadora, entonces, de nuevo, el comportamiento de sesión predeterminado no está realmente hecho para hacer esto. Tendría que implementar su propio administrador de sesión que probablemente utiliza una base de datos y realizar un seguimiento de qué sesión es para cada usuario (probablemente el ID de usuario) para poder cargarlo en otra computadora. Tampoco recomendaría esto porque te estás metiendo en otra bola entera de cera, por decir.

Si está tratando de realizar un seguimiento de los datos entre los inicios de sesión de los usuarios y las computadoras, le recomendaría usar una tabla de configuraciones de usuario. Aquí puede rastrear las configuraciones que tiene el usuario y cargarlas en cada sesión o incluso en cada carga de página sin tener que modificar el manejador de sesión.

Si desde su título desea obtener una lista de las sesiones actualmente activas, simplemente registre el último tiempo de cada usuario en una tabla y visualice esos datos, teniendo un tiempo establecido cuando considere la sesión inactiva.

12

Esto se puede hacer fácilmente con el siguiente código:

<?php 

$sessions = array(); 

$path = realpath(session_save_path()); 
$files = array_diff(scandir($path), array('.', '..')); 

foreach ($files as $file) 
{ 
    $sessions[$file] = unserialize(file_get_contents($path . '/' . $file)); 
} 

echo '<pre>'; 
print_r($sessions); 
echo '</pre>'; 

?> 

asegurarse de que comprende los riesgos cuando se hace (o permitir) esto.

+3

qué sucede si los archivos de sesión están en varios niveles: http://www.php.net/manual/en/session.configuration.php#ini.session.save-path – jondinham

+4

@PaulDinh: cierto ... Entonces necesitaría mapear los archivos recursivamente, probablemente usando el iterador SPL 'RecursiveDirectoryIterator' o similar. =) –

1

Esto es posible siempre y cuando se conoce el identificador de la sesión que quieres manejar Aquí está un ejemplo concreto:

<?php 
// Getting your own session id 
$currentSessionId = session_id(); 

// Closing your own session 
session_write_close(); 

// Switch to the session to handle 
// Here, it is assumed that you pulled the session ID from a storage 
session_id($sessionId); 
session_start(); 

// Do whatever you want with the session ... 

// Close the session once you finished to work with it 
session_write_close(); 

// Restoring your own session session 
session_id($currentSessionId); 
session_start(); 

// At this point, you're back in your own session 
+0

Gran explicación de cómo hacer lo que pregunta. – David

Cuestiones relacionadas