49 votes

Faire une boucle dans toutes les sessions d'un serveur en PHP

Est-il un moyen en PHP pour obtenir une liste de toutes les sessions (et les variables au sein de chaque) sur le serveur?

Fondamentalement, nous avons une fonction de maintenance qui a besoin de connaître les utilisateurs qui sont actuellement connectés sur le site. Nous avons déjà de stocker des données pour chaque utilisateur dans une variable de session, mais je suis en espérant que je peux faire une boucle par chacune de ces sessions et arracher les données dont j'ai besoin.

MON PHP est très limité (j'en suis un .Net développeur ussually) mais si quelqu'un sait si cela est encore possible (et comment faire) je lui en serais très reconnaissant. J'ai googlé ce, et les résultats que j'ai trouvé ont tendance à inidcate qu'il N'était PAS possible, mais je trouve cela très difficile à accepter.

Encore, Si vous ne pouvez pas vous ne pouvez pas, mais j'ai pensé que mes copains sur StackOverflow pourrait me donner une réponse définitive!

46voto

cmptrgeekken Points 3863

PHP stocke les données de session pour chaque utilisateur dans un dossier temporaire sur le serveur. Ce dossier est défini dans le php.ini fichier de configuration en vertu de la variable de session.save_path. Localiser cette valeur dans votre php.fichier ini, ou encore, de créer un fichier php avec:

<?php echo "Session Save Path: " . ini_get( 'session.save_path');?>

comme il est contenu, et ouvrez le fichier dans votre navigateur.

Une fois que vous trouver le chemin de sauvegarde pour les données de la session, ouvrir ce dossier et vous remarquerez assez simple structure. Toutes les sessions sont stockées dans le format: sess_$id de session .

Les données de Session est sérialisé, avant d'être stockés sur le disque. En tant que tel, les objets stockés dans le fichier de session devrait être désérialisé avant d'être utilisable. Toutefois, si vous êtes en utilisant un texte brut, ce qui est stockée en tant que-est, pour stocker vos données de session (ex. $_SESSION['userid'] = 1234) pour stocker des informations sur vos utilisateurs, il devrait être assez facile à analyser les données, vous êtes à la recherche dans les fichiers.

Encore une chose ... je n'ai pas regardé, mais il semble que l'ID de session qui apparaît dans le nom de fichier correspond directement à, par exemple, le nom de la PHPSESSID cookie stocké sur l'ordinateur de l'utilisateur. Donc, avec cela à l'esprit, il peut être possible de passer à travers les fichiers au sein de l'entreprise de l'annuaire de session, l'acquisition de tous les $SESSIONID valeurs, définir l'ID de session en cours à l'aide de session_id($SESSIONID), démarrer une session avec session_start() et d'accéder aux données dont vous avez besoin par le biais de PHP sans avoir à analyser le contenu des fichiers eux-mêmes. Quelqu'un peut confirmer si oui ou non ce serait possible?

Edit: Ajustée post pour correspondre à Itay commentaire.

9voto

Alastair Points 1492

Voici un moyen plus succinct d’obtenir une liste de sessions via les fichiers stockés:

 <?php
print_r(scandir(session_save_path()));
?>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X