Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 25/02/2011, 10h36   #1
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 68
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 68
Points : 11
Points : 11
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
Tobear91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h49   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
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]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 11h58   #3
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
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 :
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;
  }
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 12h07   #4
Candidat au titre de Membre du Club
 
Inscription : février 2011
Messages : 68
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 68
Points : 11
Points : 11
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
Tobear91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 13h32   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
Citation:
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 :
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]
RunCodePhp 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 16h53.


 
 
 
 
Partenaires

Hébergement Web