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 :

Comment récupérer un objet d'une session ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Comment récupérer un objet d'une session ?
    Bonjour,

    Je voudrais ajouter une instance de l'objet "CUser" (ci-dessous) dans une session et le récupérer. Et la récupération ne fonctionne pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    // fichier "CUser.php"
    class CUser {
    	var $strNom_;
    	var $strEmail_;
     
    }// class CUser
    ?>
    J'ai essayé de l'utiliser comme ceci :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php session_start(); ?>
    // fichier "CLogin.php"
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body>
    <h1>Login</h1>
    <?php
    include("CUser.php");
    if ( ! session_is_registered("monUtilisateur") ) {
       echo("Enregistrement<BR>\n");
       $monUtilisateur = new CUser();
       $monUtilisateur->strNom_ = "toto";
       echo "Nom : " .$monUtilisateur->strNom_ ."<BR>";   
       $monUtilisateur->strEmail_ = "a@a.com";
       session_register("monUtilisateur");// ou session_register('monUtilisateur'); ?
       $u = new CUser();
       $u = $_SESSION["monUtilisateur"];
       echo "Nom : " .$u->strNom_ ."<BR>";// "toto" n'est pas enregistré ?!
    }
    else {
       echo("Deja enregistre<BR>\n");
    }
    ?>
    </body>
    </html>
    Vous auriez une idée d'où ça vient ?
    (Si j'utilise des variables simples ( sans classe ), la récupération fonctionne )

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Tu fais une légère erreur ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     $u = new CUser();
     $u = $_SESSION["monUtilisateur"];
    Tu instancies $u,puis tu lui donne la valeur de $_SESSION["monUtilisateur"], si tu veux que ta session deviennent un objet, il faut faire

    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION["monUtilisateur"] = $u;
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SESSION["monUtilisateur"] = new CUser();

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Je pense que celq fonctionne de la meme facon que pour le passage d un objet via une URL

    Je pense qu il faut passer par la serialization
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $monObjet = new Objet (parametres)
    $maVariable = serialize($monObjet);
    tu ajoutes dans ta session cette variable

    et tu la lis de la facon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $maLecture = unserialize($maVariable);

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il y a la fonction "session_register" qui ne fonctionnait pas et il fallait placer le "include" avant le "session_start".
    Inutilse de serialize, cela se fait automatiquement.
    (Je suis en PHP 4.3)

    Voilà ci-dessous le code qui fonctionne correctement :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php 
    include("CUser.php");
    session_start(); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body>
    <h1>Login</h1>
    <?php
    if ( ! session_is_registered("user") ) {
       echo("Enregistrement<BR>\n");
       $user = new CUser();
       $user->strNom_ = "toto";   
       $user->strEmail_ = "a@a.com";
       $user->afficher();
       // Enregistrement dans la session   
       $_SESSION["user"] = $user;
     
       // Lecture des variables de la session
       //$user_lecture = new CUser();
       $user_lecture = $_SESSION["user"];
       $user_lecture->afficher();
    }
    else {
       echo "deja enregistre<BR>\n";
       $user_lecture = $_SESSION["user"];
       $user_lecture->afficher();
    }
    ?>
    </body>
    </html>
    Merci !
    Dernière modification par Invité ; 06/05/2008 à 15h40. Motif: oubli

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer un objet d'une liste?
    Par Maren00 dans le forum Général Python
    Réponses: 9
    Dernier message: 15/05/2013, 16h27
  2. Réponses: 5
    Dernier message: 08/02/2010, 15h07
  3. Réponses: 3
    Dernier message: 22/05/2006, 09h58
  4. Réponses: 1
    Dernier message: 05/05/2006, 14h37
  5. [servlet][bean]comment récupérer l'objet request
    Par otminou dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/09/2004, 14h40

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