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 :

[POO] probléme avec "unserialize"


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Par défaut [POO] probléme avec "unserialize"
    Bonjour a tous,
    j'ai un petit probléme avec "unserialize".
    Je créé un objet que je met dans une session jusque la tout va bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	$utilisateur=new user("visiteur","vu");
    	serialize($user);
    	$_SESSION['user']=$utilisateur;
    Le probléme c'est que quand je veut recupérer cet objet, j'ai une erreur comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <b>Warning</b>:  unserialize() expects parameter 1 to be string, object given in <b>F:\Site PHP\Objet
     
    \PHP\connection.php</b> on line <b>24
    Voici mes codes (j'ai essayé avec les 2
    Code 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if(!isset($_GET['login']) && !isset($_GET['pass']) ){
    	echo "ERREUR DE CHARGEMENT DE LA PAGE WEB";
    }else{
    	include("../class/connection.class.php");
    	include("../class/user.class.php");
     
    	$utilisateur = new user("visiteurr","quetchi");
    	session_start();
    	$utilisateur=$_SESSION['user'];
    	$utilisateur=unserialize($utilisateur);
    ...
    Code 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if(!isset($_GET['login']) && !isset($_GET['pass']) ){
    	echo "ERREUR DE CHARGEMENT DE LA PAGE WEB";
    }else{
    	include("../class/connection.class.php");
    	include("../class/user.class.php");
     
    	session_start();
    	$contenu=$_SESSION['user'];
    	$utilisateur=unserialize($contenu);
    Si quelqu'un a une idée ( je suis sur que c'est tout bête mais je trouve pas)

  2. #2
    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
    Par défaut
    Tout d'abord il est inutile de sérialiser/désérialiser vous-mêmes vos objets : PHP le gère déjà, comme il ferait avec une variable scalaire.

    Votre appel serialize est réalisée dans le vide :
    Vous ne récupérez pas la valeur retournée par serialize car comme la grande majorité des fonctions PHP, celle-ci ne modifie pas sur place ses paramètres.

    Mais cet appel (unserialize) est totalement inutile car si vous regardez bien $_SESSION['user'] doit déjà être un objet User. Le tout étant d'inclure la déclaration de la classe avant l'opération de désérialisation (ici réalisée implicitement par session_start).

  3. #3
    Membre éclairé Avatar de dragonfly
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    464
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 464
    Par défaut
    Merci,

    Donc le serialize je l'enléve mais, dans mon premier exemple,je déclare la classe avant le session_start(); donc ca devrait fonctionner, non?

    Sinon un exemple avec du code serait plus clair je pense

  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
    Par défaut
    Citation Envoyé par dragonfly
    Donc le serialize je l'enléve mais, dans mon premier exemple
    En l'état actuel il ne sert strictement à rien.

    Citation Envoyé par dragonfly
    je déclare la classe avant le session_start(); donc ca devrait fonctionner, non?
    Oui, le message d'erreur tant à le prouver ($_SESSION['user'] étant un objet). Un var_dump de cette variable vous permettra de le confirmer.

    Citation Envoyé par dragonfly
    Sinon un exemple avec du code serait plus clair je pense
    FAQ : Les objets font-ils bon ménage avec les sessions en PHP 5 ?

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

Discussions similaires

  1. [Shell] Problème avec le Back-quote (ksh)
    Par bob94700 dans le forum Linux
    Réponses: 3
    Dernier message: 27/01/2008, 12h45
  2. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  3. [MySQL] Problème avec un double quote
    Par wormseric dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/01/2007, 14h44

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