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 objet dans session [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Par défaut Récupérer objet dans session
    Bonjour,
    je crée une session dans laquelle je met mon objet USER

    valider_user.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    session_start();
    include 'class\User.php';
    $monuser= User::User_Existe($_POST["mailAuthentification"], $_POST["mdpAuthentification"]);
    $_SESSION['userSession']=$monuser;
    header('Location: userLog.php');
    ?>
    userLog.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
     
    <?php session_start(); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title></title>
        </head>
        <body>
            <?php
            include 'class\User.php';
            if(isset($_SESSION['userSession'])) {
                echo 'La variable "userSession" existe '.$_SESSION['userSession']->mail;
            }
            else {
                echo 'pas de session';
            }
            ?>
        </body>
    </html>
    la page me renvoie : "La variable "userSession" existe " mais il me manque le mail du user.

    J'ai tente de caster $_SESSION['userSession'] en user mais rien à faire.

    Savez vous comment faire pour passer au mieux un objet dans une session et le récupérer l'autre cote?

    merci

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Tu serialises ton objet avant de l'envoyer dans le session ... déserialises pour le contraire. En php, serialize et unserialize

  3. #3
    Membre éclairé Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Par défaut
    Merci j'ai résolu le problème.

    Quel est l'intérêt de serialiser avant de le mettre dans la session et je le deserialise l'autre cote plutôt que de mettre mon objet directement dans ma session ?

    merci

  4. #4
    Membre expérimenté

    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

  5. #5
    Membre éclairé Avatar de chris81
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 626
    Par défaut
    Citation Envoyé par julp Voir le message


    Citation Envoyé par Fench Voir le message
    Edit:
    @julp: Si tu le dis! De mon côté si je ne le fais pas, je ne retrouve pas mon objet avec sa correcte définition, je peux rien en faire et je plante.
    je viens de faire le test avec et sans serialise ca fait pareil, donc j'aurai tendance a être d'accord avec julp. J'utilise aussi netbeans et xdebug. Je pense que ton souci viens du fait que tu place mal tes descriptions de classe.

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    En sérialisant, tu places dans la variable SESSION les données concernant le type d'objet que tu insert (ici User) + les données.

    Si tu unserialize directement tu n'auras c info et donc rien ou une définition de type incorrecte

    Edit:
    @julp: Si tu le dis! De mon côté si je ne le fais pas, je ne retrouve pas mon objet avec sa correcte définition, je peux rien en faire et je plante.

    Edit: D'ailleurs je le vois bien en utilisant Netbeans et ZDebug

  7. #7
    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
    Par défaut
    Citation Envoyé par Fench
    @julp: Si tu le dis! De mon côté si je ne le fais pas, je ne retrouve pas mon objet avec sa correcte définition, je peux rien en faire et je plante.

    Edit: D'ailleurs je le vois bien en utilisant Netbeans et ZDebug
    Il me semble que le désérialisation était propre à Php4, mais j'ai très peu codé dans cet environnement.

    Mais en Php5, il y en a pas besoin, c'est déjà prévu.
    De mon coté, j'ai jamais rien fais dans ce sens, jamais eu de problème, aussi bien pour tous les objets que les sessions.

    Si tu estime qu'il t'es nécessaire de le faire, sinon ça bug, alors j'ai tendance à dire que tu dois avoir un problème.


    J'ai tente de caster $_SESSION['userSession'] en user mais rien à faire.
    Il me semble que pour mettre l'intégralité d'une variable de session dans un objet (ou autre), ce serait une syntaxe comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class user {
    	public $userSession;
     
    	public function __construct() {
    		if (!isset($_SESSION['userSession'])) {
    			$_SESSION['userSession'] = 'bidule';
    		}
    		$this->userSession =& $_SESSION['userSession'];
     
    	}
    }
    Ici, on pourra accéder aux données aussi bien via $_SESSION que par l'objet $user.

  8. #8
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Voici la réponse qui plaira à tout le monde ... extrait du manuel sur la sérialisation, les dix lignes après l'exemple concernera certain.

    De mon côté, j'ai appris un peu plus

    http://php.net/manual/fr/language.oo...ialization.php

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

Discussions similaires

  1. Stocker un objet dans la session
    Par Matth_S dans le forum ASP
    Réponses: 9
    Dernier message: 20/09/2006, 11h34
  2. récupérer un objet dans une liste chainée
    Par marsuwhite dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2006, 14h05
  3. [POO] PHP 5, transmettre objet dans la session
    Par FCDB dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2006, 14h26
  4. [struts][jsp] récupérer objet session dans ActionForm
    Par mlequim dans le forum Struts 1
    Réponses: 24
    Dernier message: 02/11/2005, 16h32

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