PHP memorizza i dati di sessione per ciascun utente in una cartella temporanea sul server. Questa cartella è definita nel file di configurazione php.ini sotto la variabile session.save_path. Individuare questo valore all'interno del tuo file php.ini, o, in alternativa, creare un file php con:
<?php echo "Session Save Path: " . ini_get('session.save_path');?>
come il suo contenuto, e aprire il file nel browser.
Una volta trovato il percorso di salvataggio per i dati di sessione, apri quella cartella e noterai una struttura abbastanza semplice. Tutte le sessioni sono memorizzate nel formato: sess_ $ SESSIONID.
I dati di sessione vengono serializzati prima di essere memorizzati su disco. Pertanto, gli oggetti memorizzati nel file di sessione dovrebbero essere deserializzati prima di poter essere utilizzati. Tuttavia, se stai utilizzando un testo normale, che viene archiviato così com'è, per memorizzare i tuoi dati di sessione (ad esempio $_SESSION['userid'] = 1234
) per archiviare le informazioni sui tuoi utenti, dovrebbe essere abbastanza semplice da analizzare i dati che stai cercando da all'interno dei file.
Un'altra cosa ... Non l'ho esaminato, ma sembra che l'ID di sessione che appare nel nome del file corrisponda direttamente, ad esempio, al nome del cookie PHPSESSID memorizzato sul computer dell'utente. Pertanto, tenendo presente questo, è possibile scorrere i file all'interno della directory della sessione temporanea, acquisire tutti i valori $ SESSIONID, impostare l'ID della sessione corrente utilizzando session_id($SESSIONID)
, avviare una sessione con session_start()
e accedere ai dati necessari tramite PHP. senza dover analizzare i file dei contenuti stessi. Qualcuno può confermare se questo sarebbe possibile o no?
Modifica: Post corretto per abbinare il commento di Itay.
Vale la pena menzionare che questo tipo di hack è una pessima idea. PHP ha l'architettura 'condividi niente' e provare a modificarlo sarebbe come usare un cacciavite per piantare chiodi. Invece di analizzare i file interni di serwer, creane uno tuo, o meglio usa il database per mantenere tutto ciò che ti serve. – smentek
php ha l'opzione per salvare i dati di sessione in memoria. non sempre possiamo ricavarle dai file. – jondinham
e molto altro, quei file "ses_ *" possono essere collocati in una struttura multilivello di directory. questo è quello che viene detto in php.net – jondinham