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 :

Session_destroy() dans une class


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Points : 42
    Points
    42
    Par défaut Session_destroy() dans une class
    Bonjour,

    j'ai une question qui me trotte dans la tête et que je n'arrive pas à réaliser.

    Est-il possible de mettre dans ma classe Membre.class.php ma session_destroy dans une fonction deco(), par exemple. Et de pouvoir appeler cette fonction lorsque je clique sur mon lien Déconnexion ?

    Si quelqu'un pouvait me mettre sur la voie

    Merci et bonne journée

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Vu que tu fais de la POO, n'aurais tu pas créer une classe Session pour justement gérer les sessions ?
    Si tel est le cas, (à titre perso), j'aurais plus vu que ce soit à cette classe Session de se charger de détruire la session.

    Fais bien le point la dessus, car on peut très bien un jour dans un autre contexte vouloir détruire la session, et ça, sans pour autant qu'une personne se soit identifiée comme membre.
    Si tel est le cas, on se retrouverait avec 2 codes effectuant la même chose, ou pire, créer une instance Membre pour appeler la méthode Membre::deco().


    Disons que l'ouverture d'une session peu très bien ne pas être liée à un membre.
    Faut voir.
    Toujours à titre perso, la gestion des session est théoriquement un mécanisme à part, non dépendant de ce quelle contient.
    Regarde la doc, et particulièrement la fonction : session_set_save_handler
    Doc Php : http://fr2.php.net/manual/fr/functio...ve-handler.php
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    En effet, il n'est pas de la responsabilité de la classe Membre de manager la session. C'est une classe de service qui doit s'en charger et offrir aux autres classes un mécanisme cohérent d'ouverture, fermeture et définition de save handlers.

    Un exemple simple pas bien compliqué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    abstract class Session {
     
      public static function start () {
         if (!session_id()) return session_start();
         return false;
      }
     
      public static function stop () {
        if (session_id() return session_destroy();
        return false; 
      }
     
      public static function setSaveHandler ($callback) {
        if (is_callable($callback))
          return session_set_save_handler($callback);
        return false;
      }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    Je commence juste la POO avec php, et la tu viens de m'embrouiller en 2 secondes ^^

    Si je crée une class session.class.php, dedans je n'aurais que 2 méthodes ?

    session_start,
    session_destroy,

    vu que je n'utilise que ca ?
    Je vais étudier la doc que tu m'a donné

    ---------------

    Waa je vais étudier tout ca c'est vrai que définir une class à part me parrait plus cohérent

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Si je crée une class session.class.php, dedans je n'aurais que 2 méthodes ?

    session_start,
    session_destroy,

    vu que je n'utilise que ca ?
    Non, une gestion des sessions personnalisée demandera plus que 2 méthodes.

    Lis bien la doc, qui certes sont de simples fonctions, mais le principe de base est là.
    Il faudra au minimum reprendre le même principe, car à juste titre, en définissant session_set_save_handler(), on dit qu'on ne souhaite plus une gestion par défaut, mais que Php fasse référence à notre propre mécanisme (soit les fonctions comme la doc ou notre classe et ses méthodes).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool session_set_save_handler ( callback $open , callback $close , callback $read , callback $write , callback $destroy , callback $gc )
    Il faudra au minimum avoir ces 6 méthodes que Php aura besoin.
    Plus les autres, comme une méthode Session::start(pour session_start), voir Session::id(pour session_id), Session::name(pour session_name), etc ...


    Epluche un peu le Net en recherchant des tutos sur la gestion des sessions personnalisée, il y en a, ça sera autant de source d'inspiration.
    Faut quand même bien comprendre comment fonctionne les sessions pour faire quelque chose de personnalisée, car une bonne part de la sécurité reposera la dessus.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/07/2005, 23h10
  2. classe dans une classe ?
    Par tut dans le forum UML
    Réponses: 23
    Dernier message: 25/06/2004, 15h00
  3. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15
  4. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 18h16
  5. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42

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