IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Déconnecter un membre


Sujet :

Langage PHP

  1. #1
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    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 ?

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    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.

  3. #3
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    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.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    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.

  5. #5
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    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.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    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.

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    Oui mais j'aurais voulu le faire sans passer par des requêtes vers la base de donnée.

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    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 !

Discussions similaires

  1. Comment faire déconnecter les utilisateurs d'une base
    Par ENIT-Info dans le forum Access
    Réponses: 23
    Dernier message: 28/02/2017, 14h57
  2. Réponses: 1
    Dernier message: 15/07/2008, 13h27
  3. déconnection d'un espace membre
    Par CROSS dans le forum Langage
    Réponses: 6
    Dernier message: 21/06/2007, 23h17
  4. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    Réponses: 6
    Dernier message: 01/03/2004, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo