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 :

Récupérer une valeur dans $_SESSION


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut Récupérer une valeur dans $_SESSION
    Bonjour,

    Je ne sais pas si ce que je veux faire est correct et si oui, comment accéder à mes valeurs ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    // 1. j'instancie mes classes.
    $contact = new Contact();
    $contactManager = new ContactManager();
     
    // 2. je fais ma recherche recherche 
    $contacts = $contactManager->search($contact);
     
    // 3. je stocke mes résultats de ma recherche en session
    $_SESSION['Contacts'] = $contacts;
    En résumé : je stocke les données dans un objet Contact qui lui-même est stocké dans une variable de session

    var_dump ($_SESSION['Contacts'];

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    array (size = 1)
     'Contacts' =>
      array (size =2)
       0=>
        objet (Contact)
         private 'id' = string
    j'esperais pouvoir récupérer ma valeur avec un

    $idcontact = $_SESSION['Contacts']->id;

    mais bien sur pas possible cela aurait été trop simple puisqu'il est en privé.

    Avez-vous des conseils ?

  2. #2
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 164
    Points : 377
    Points
    377
    Par défaut
    Bonjour,

    Tous d'abort, l'utilisation des objets dans les variables de sessions peut vous posez problème. Vous devez bien définir votre objet avant l'appel au démarrage de session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    /* Définition de l'objet. */
    class Contact{
        /***/
    }
     
    /* Démarrage de la session. */
    session_start()
     
    $contact = new Contact();
     
    /* Utilisation de l'objet dans une variable de session. */
    $_SESSION['contact'] = $contact;
    Sans ça vous risquez de tomber sur une erreur __PHP_Incomplete_Class

    Et comme vous le présentiez, si votre attribut de classe est privé vous ne pourrez pas le récupérer directement.
    Si vous ne pouvez pas changer sa propriété d'encapsulation de private en public ou que vous ne pouvez pas définir votre objet avant votre démarrage de session,
    je vous conseile de créer un assesseur dans votre définition d'objet :

    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
    <?php
     
    /* Démarrage de la session. */
    session_start()
     
    /* Définition de l'objet. */
    class Contact{
        /***/
     
        /* Assesseur pour l'identifiant. */
        public function getId()
        {
            return $this->id;
        }
    }
     
    $contact = new Contact();
     
    /* Utilisation de l'objet dans une variable de session. */
    $_SESSION['contact'] = $contact->getId();
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    Merci pour votre retour...j'essaye de comprendre les sessions et les objets mais je ne comprends pas tout

    J'ai bien une class Contact dans laquelle j'ai tous mes getters - ok

    Dans un fichier Search.php
    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
     
    ......
    if ($checkDataOK) {
     
     if (isset($data) && ($data == 'xxxxx')) {
     
      $contact = new Contact();
      $contactManager = new ContactManager();
     
      // on fait la recherche et on stocke les résultats dans une variables
      $contacts = $contactManager->search($contact);
     
      //on stocke les résultats de la recherche en session
      $_SESSION['Contact'] = $contacts;
     
      //var_dump($_SESSION); 
      //var_dump($_SESSION['Auth']); // ==> datas de l'utilisateur loggé
      //var_dump($_SESSION['Contact']);  //  ==> datas des contacts trouvés à partir des critères de recherches que l'on a stocké dans une variable de session
      //die; 
     
     } else {
      ...
     }
    Create.php
    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
     
     
    // j'aimerai récupérer l'id de mes contacts trouvés via $_SESSION['Contact'];
     
     session_start(); 
     
     var_dump($_SESSION); 
     // je récupère bien mes datas : $_SESSION['Auth']
     // j'ai bien un message d'erreur partiel   --  object(__PHP_Incomplete_Class)[2]  -- pour mes datas : $_SESSION['Contact']
     
     spl_autoload_register(function($class){
      include '../CLASS/'. $class . '.php'; 
     }); 
     
     $contact = new Contact();
     
     // En l'état cela ne peut pas marcher 
     echo 'resultat :'; 
     var_dump($_SESSION['Contact'] = $contact->getId());
    il y a qq chose qui m'échappe et que je ne comprends pas

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 262
    Points : 121
    Points
    121
    Par défaut
    J'ai trouvé. Si cela peut aider qq'un :

    fichier1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    session_start(); 
     
    $contact = new Contact();
    $contactManager = new ContactManager();
     
    // on fait la recherche et on stocke les résultats dans une variable 
    $contacts = $contactManager->search($contact);
     
    //on stocke cette variable en session
    $_SESSION['Contacts'] = $contacts;
    fichier 2
    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
     
    // on inclut les classes ou autoload
    spl_autoload_register(function($class){
     include '../CLASS/'. $class . '.php'; 
    }); 
     
    // 2. OUVERTURE DE SESSION
    session_start(); 
     
    // 3. ON STOCKE LES DONNEES DANS UNE VARIABLE (array)
    $arrayContacts = ($_SESSION['Contacts']);
     
    // 4. FOREACH 
    foreach ($arrayContacts as $key => $contact) {
     echo $contact->getNom(). '<br>';
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur .NET/PHP/JAVA/C++
    Inscrit en
    Septembre 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur .NET/PHP/JAVA/C++

    Informations forums :
    Inscription : Septembre 2017
    Messages : 13
    Points : 21
    Points
    21
    Par défaut
    Alors si c'est résolu, marque le comme résolu

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

Discussions similaires

  1. Récupérer une valeur dans une JList
    Par Noosymer dans le forum Composants
    Réponses: 6
    Dernier message: 17/06/2010, 23h53
  2. [VBA-A] Récupérer une valeur dans une table Access
    Par Dude2006 dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/04/2006, 23h56
  3. récupérer une valeur dans un selected
    Par lacfab dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2005, 09h48
  4. Réponses: 5
    Dernier message: 09/09/2005, 17h51
  5. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49

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