Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/10/2006, 20h20   #1
Inscrit
 
Inscription : juin 2006
Messages : 531
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 531
Points : 225
Points : 225
Par défaut Déconnecter un membre

Bonjour,

Je fais l'admin de mon site.
Je veux pouvoir suspendre les comptes.
Donc j'ai bloqué la possibilité de s'identifier durant x jours.
Mais si le gars surfe encore au moment où j'ai décidé de suspendre son compte, la suspension doit prendre effet immédiatement et non à la prochaine identification.
Donc je voudrais faire sauter sa session en cours, pour qu'il soit déconnecté dès qu'il change de page.

Comment puis-je faire ?
JackBeauregard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2006, 21h05   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Cela requiert une vérification à chaque page ou au moins toutes les X secondes de cette suspension (implémentée en base de données je suppose) puis d'utiliser la fonction session_destroy.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2006, 21h13   #3
Inscrit
 
Inscription : juin 2006
Messages : 531
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 531
Points : 225
Points : 225
C'est justement ce que je voulais éviter. J'avais espérer cliquer sur un bouton et désintégrer le membre indélicat. Ou au moins à défaut détruire sa session sans recourir à des updates et autres select.
JackBeauregard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2006, 23h39   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Je vois deux solutions.
1) Dans ta table user, rajoute un champ sessionValide. Quend tu renvoies un membre, tu passes ce champ à 0. A chaque page, tu vérifies ce champ. S'il est égal à 0, tu vires.
2) Très tiré par les cheveux. Tu mets en bdd l'id de session du membre. Quand tu le renvoies, tu effaces le fichier correspondant dans le dossier de session.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2006, 09h41   #5
Inscrit
 
Inscription : juin 2006
Messages : 531
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 531
Points : 225
Points : 225
Je préfèrerai la deuxième solution (même si je ne vois pas comment virer l'id voulu du fichier de session). Mais si il y a des histoire de session_regenerate_id(), ça ne fonctionnera pas.
JackBeauregard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2006, 12h06   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par vg33
2) Très tiré par les cheveux. Tu mets en bdd l'id de session du membre. Quand tu le renvoies, tu effaces le fichier correspondant dans le dossier de session.
Théoriquement, c'est ce que fait session_destroy (testé sous PHP5 + Windows). Vous pouvez utiliser, comme indiqué dans la documentation de PHP, la fonction setcookie pour supprimer l'identifiant de session si celui-ci est propagé de la sorte (cela dépend de la configuration de votre serveur).


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2006, 12h14   #7
Inscrit
 
Inscription : juin 2006
Messages : 531
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 531
Points : 225
Points : 225
Oui mais j'aurais voulu le faire sans passer par des requêtes vers la base de donnée.
JackBeauregard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2006, 13h00   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Citation:
Envoyé par JackBeauregard
Oui mais j'aurais voulu le faire sans passer par des requêtes vers la base de donnée.
De toute façon, tu ne pourras pas éviter le passage par la bdd. Je ne vois pas le problème, d'ailleurs.
Le plus simple, à mon avis, est la 1ère solution, et elle est imparable.
Pour la 2ème : chaque session est enregistrée dans un répertoire temporaire, sous la forme d'un fichier texte propre à chaque session. Le nom de ce fichier est formé à partir de l'id de session. Si on le connaît, il suffit de supprimer ce fichier pour tuer la session. Mais c'est tiré par les cheveux car cela demande des manips tordues au lieu de faire un simple session_destroy() à la première page affichée par l'user, ce qui est quand même plus simple !
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h04.


 
 
 
 
Partenaires

Hébergement Web