Page 1 sur 2
Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 11:00
par Idleman
Bonjour à tous !!
Je suis nouveau sur le forum, pardonnez moi d'avance si je poste au mauvais endroit

.
J'ai un petit soucis, j'ai un client qui souhaite disposer d'un bouton dans son interface d'administration permettant de "déconnecter tous les utilisateurs en cours" .
Le client est issu d'un milieu as400 ou ce genre d'actions est habituel mais en PHP je vois mal comment supprimer toutes les sessions serveur et non uniquement la session en cours...
Évidemment il y a des astuces bricoles du style "mettre a 1 une valeur disconnectAll" en base et faire la vérif à chaque chargement de page pour supprimer la session de l'utilisateur courant" mais ce n'est ni propre ni optimisé, et je pense qu'il y a plus simple.
Avez vous une idée?
Merci
Re: Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 11:37
par xTG
Supprimer tous les fichiers de sessions sur le serveur ?
C'est pas plus propre mais bon... C'est pas très propre en fait de vouloir déconnecter des clients comme ça.
Le système de session de PHP n'a jamais été développé dans cette optique car il est là pour permettre la sauvegarde d'informations pour une visite et non pour l'identification d'un client (même si on peut partir du principe que si on stocke des infos sur une visite on identifie le visiteur mais bon c'est pas réellement la même chose).
Re: Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 12:58
par Idleman
J'en suis conscient, mais je n'ai pas vraiment le choix,
"vox cliens, vox dei" comme qui dirait...
En revanche je ne souhaite pas supprimer "toutes les sessions du serveur" mais uniquement certaines sessions ciblées.
Merci pour ta réponse

, j’espère que quelqu'un pourras me dépanner.
Re: Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 13:10
par xTG
Il faut dans ce cas gérer toi même ton propre système de session avec une base de données (avec mise à jour sur chaque page ect).
Car sinon tu seras incapable d'identifier dans le tintouin si les sessions sont toujours actives, et surtout ce qu'elles renferment...
Re: Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 14:28
par moogli
hum gérer les session avec SQLITE ?
tu peux regarder
ce post de Stealth35 sur le sujet
(a mon avis le plus simple nan ?).
@+
Re: Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 15:09
par Idleman
C’est intéressant malheureusement je dois faire avec une bonne vielle base MySQL déjà en place

.
Je crois qu'il ne me reste plus qu'a faire un contrôle de session par page alors

Re: Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 16:02
par moogli
heu pourquoi tu ne pourrais pas utiliser sqlite ?
c'est une contrainte (foireuse ?) imposée ?
c'est natif avec php5, c'est juste un fichier "en plus" sur ton espace disque. et la pour le coup un "simple" delete peux régler ton problème
@+
Re: Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 16:14
par Idleman
En fait le logiciel que je développe est un greffon pour glpi qui, dans l'entreprise de mon client, a pour base MySQL.
De plus une grosse quantités de données tourne sur cette base que SQL lite (plus rapide et léger, mais en conséquent plus modeste) ne pourrais pas gérer.
Re: Déconnecter de force toutes les sessions PHP
Posté : 30 déc. 2011, 16:45
par moogli
en fait le but n'est pas de déporté la DB cliente vers SQLITE juste les sessions.
en claire php va utiliser une base sqlite (que tu devrais pouvoir aussi utiliser, par exemple avec PDO) pour stocker les sessions plutôt que des fichiers dans le répertoire temporaire du serveur. Et donc en aucun cas tu n'aura a migrer les données existantes vers sqlite (et comme tu l'indique ce ne serait pas forcément une bonne idée).
ceci dit tu peux très bien te créer ton systeme de session perso via MySQL (ou autre ^^). ça commence
par ici
@+
Re: Déconnecter de force toutes les sessions PHP
Posté : 03 janv. 2012, 07:02
par Skw33d
Évidemment il y a des astuces bricoles du style "mettre a 1 une valeur disconnectAll" en base et faire la vérif à chaque chargement de page pour supprimer la session de l'utilisateur courant" mais ce n'est ni propre ni optimisé, et je pense qu'il y a plus simple.
Pourquoi forcement en base ? Pourquoi ne pas créer un fichier par exemple disconnectAll.txt lorsqu'on veut que tout le monde soit déconnecter et simplement tester son existence à chaque fois ? Je pense que c'est plus optimisé déjà du fait que ça allège ta DB si il y a beaucoup d'utilisateurs.
Re: Déconnecter de force toutes les sessions PHP
Posté : 03 janv. 2012, 09:00
par xTG
Sauf que tu perds l'attrait des sessions qui peuvent être gérées sans souci grâce à quelques fonctions en bdd.

Avec un fichier txt il faudrait recoder toi même tout le système fourni de base par PHP.
Re: Déconnecter de force toutes les sessions PHP
Posté : 03 janv. 2012, 09:59
par Mazarini
Je verrais bien une date stockée lors de l'identification (début de la session ?) et comparer cette date avec une date stockée en base. Il reste à contrôler si cette date de début de session est inférieure à la date de reset à chaque début de traitement pour reinitialiser $_SESSION.
Re: Déconnecter de force toutes les sessions PHP
Posté : 03 janv. 2012, 14:52
par Skw33d
Sauf que tu perds l'attrait des sessions qui peuvent être gérées sans souci grâce à quelques fonctions en bdd.

Avec un fichier txt il faudrait recoder toi même tout le système fourni de base par PHP.
Je ne vois pas ce que tu veux dire. Par ce fichier j'entendais simplement un
if(file_exists('discoAll.txt'))
unset($_SESSION['connected']);
Est ce ça que tu avais compris ?
Re: Déconnecter de force toutes les sessions PHP
Posté : 03 janv. 2012, 15:26
par xTG
Il manque encore le "comment je vais définir que toutes les sessions ont bien étées purgées ?" en fait avec ton système, c'est ça que je voulais mettre en évidence.
Une session est généralement valable une heure (ne parlons pas des serveurs configurés par des *ù:!$^*ù*=).
Donc à moins de créer le fichier, puis de revenir une heure plus tard pour enfin commencer à travailler tout en étant sûr que les utilisateurs ont bien été déconnectés...
Mais en effet à l'origine je ne pensais pas à cela en voyant ton post.
Je pensais que tu stockais dans ton fichier tous les id de session à dégager, et là faut coder ça.
Re: Déconnecter de force toutes les sessions PHP
Posté : 03 janv. 2012, 16:53
par stealth35
supprimes les fichiers de session du serveur
$sessions = glob(sys_get_temp_dir().'/sess_*');
array_map('unlink', $sessions);