2009-08-08 18 views
6

Vorrei ottenere l'elenco sessione dal localhost.So, ho scritto

session_start(); 
print_r($_SESSION); 

attualmente accedere persona è two.one è da un altro PC e l'ultimo è ospitato pc.But la sessione su pc mostrata solo su host. In realtà vorrei avere tutto l'elenco degli utenti di sessione.

+0

domanda e asnwers simile disponibile qui: http://stackoverflow.com/questions/675913/looping-through-all-a-servers-sessions-in-php –

+0

Sono d'accordo con la mentalità generale degli intervistati. Sembra che quello che stai cercando sia una tecnologia diversa. Posso suggerire prese per il web. –

risposta

4

Le sessioni sono isolate l'una dall'altra. La sessione di un utente non ha accesso alla sessione di un altro utente. La variabile $_SESSION fa riferimento solo alla sessione dell'utente corrente.

Non penso che ci sia un modo per accedere a una sessione di un altro utente oltre a scoprire dove i file di sessione sono memorizzati fisicamente su disco e analizzandoli a mano. NOTA CHE QUESTO NON È SITUITAMENTE QUALCOSA CHE VUOI FARE.

+0

come fare per ottenere tutte le sessioni? in qualche modo? –

1

Non sono sicuro di cosa stai chiedendo, ma penso che stai cercando di ottenere un'altra sessione da un altro utente. Se questo è il caso, allora non lo consiglierei e non è davvero possibile. Le sessioni sono individuali per ogni sessione del browser (se non diversamente specificato tramite i cookie).

Se si chiede di recuperare le sessioni dal proprio utente da un altro computer, quindi, di nuovo, il comportamento di sessione predefinito non è fatto per farlo. È necessario implementare il proprio gestore di sessioni che probabilmente utilizza un database e tiene traccia di quale sessione è per quale utente (id utente probabilmente) in modo che possa caricarlo su un altro computer. Non lo consiglierei neanche perché stai entrando in un'altra sfera intera di cera, per dire.

Se si sta tentando di tenere traccia dei dati tra accessi utente e computer, si consiglia di utilizzare una tabella delle impostazioni utente. Qui puoi tenere traccia delle impostazioni che l'utente ha e caricarle ogni sessione o anche ogni pagina caricata senza dover modificare il gestore di sessione.

Se dal titolo si desidera ottenere un elenco di sessioni attive in quel momento, è sufficiente registrare l'ultimo tempo di hit di ciascun utente in una tabella e visualizzare tali dati, con un orario impostato quando si considera la sessione inattiva.

12

Questo può essere fatto facilmente con il seguente codice:

<?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>'; 

?> 

assicurarsi di aver compreso i rischi nel fare (o permettere) questo.

+3

cosa succede se i file di sessione sono a più livelli: http://www.php.net/manual/en/session.configuration.php#ini.session.save-path – jondinham

+4

@PaulDinh: True ... Quindi è necessario mappare i file in modo ricorsivo, probabilmente usando l'iteratore SPL di 'RecursiveDirectoryIterator' o simile. =) –

1

questo è possibile a patto che si conosce l'identificatore della sessione che si desidera gestire. Ecco un esempio 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

Grande spiegazione su come fare ciò che la domanda chiede. – David

Problemi correlati