Déconnecter de force toutes les sessions PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Déconnecter de force toutes les sessions PHP

Re: Déconnecter de force toutes les sessions PHP

par stealth35 » 03 janv. 2012, 17:03

quand une personne se déconnecte la session est gardé ? comment ça se passe si la personne supprime son cookie de session ?

Re: Déconnecter de force toutes les sessions PHP

par Skw33d » 03 janv. 2012, 16:59

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.
C'est vrai que je n'avais pas pensé à ça.
supprimes les fichiers de session du serveur
$sessions = glob(sys_get_temp_dir().'/sess_*');
array_map('unlink', $sessions);
Oui mais quand est il des autres données stockées en session qui n'interagissent pas avec la connexion de l'utilisateur ?

Re: Déconnecter de force toutes les sessions PHP

par stealth35 » 03 janv. 2012, 16:53

supprimes les fichiers de session du serveur
$sessions = glob(sys_get_temp_dir().'/sess_*');
array_map('unlink', $sessions);

Re: Déconnecter de force toutes les sessions PHP

par xTG » 03 janv. 2012, 15:26

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

par Skw33d » 03 janv. 2012, 14:52

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

par Mazarini » 03 janv. 2012, 09:59

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

par xTG » 03 janv. 2012, 09:00

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

par Skw33d » 03 janv. 2012, 07:02

É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

par moogli » 30 déc. 2011, 16:45

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

par Idleman » 30 déc. 2011, 16:14

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

par moogli » 30 déc. 2011, 16:02

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

par Idleman » 30 déc. 2011, 15:09

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

par moogli » 30 déc. 2011, 14:28

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

par xTG » 30 déc. 2011, 13:10

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

par Idleman » 30 déc. 2011, 12:58

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.