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 :

Objet en session avec serialize()


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut Objet en session avec serialize()
    Bonjour à tous,
    J'aurais besoin d'un petit coup de main avec les sessions... J'essaye de stocker un objet en session en utilisant la fonction serialize(). Mais je n'arrive pas a la récupérer avec unserialize(). J'ai cette erreur qui s'affiche :
    Warning: unserialize() expects parameter 1 to be string, object given in ...
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Login via un formulaire classique
    if($login){
       $_SESSION["utilisateur"] = serialize(new Utilisateur($id)); // L'utilisateur est bien créé
    }
     
    if(isset($_SESSION["utilisateur"])){
       $user = unserialize($_SESSION["utilisateur"]); // C'est la que ça plante...
    }
    Merci d'avance pour votre aide !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($_SESSION["utilisateur"]);
    pour controler

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    __PHP_Incomplete_Class Object
    (
        [__PHP_Incomplete_Class_Name] => Utilisateur
        [id] => 1
    ...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    d'apres mes recherches, la classe doit être instanciée avant le demarrage de la session.

  5. #5
    mon_nom_est_personne
    Invité(e)
    Par défaut
    alors je consulte http://jp2.php.net/manual/fr/languag...ialization.php et je lis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Si vous utilisez les sessions et la fonction session_register()  pour sauver des objets, ces objets seront linéarisés automatiquement avec la fonction serialize() à la fin de chaque script, et relus avec unserialize() au début du prochain script. Cela signifie que ces objets peuvent apparaître dans n'importe quelle page qui utilise vos sessions.
    De ce fait, pas besoin de serialize un objet dans un session c'est automatique a la sauvegarde

    juste n'oublie pas pas que les session sont enregistré dans un fichier texte côté serveur et que bien souvent le programme se finit avant la fin de l'écriture du fichier. utilise donc apres l'instanciation de ton objet dans la session sleep ou usleep.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 47
    Points : 25
    Points
    25
    Par défaut
    Le probleme de session_register c'est que c'est une fonction obsolète...
    Sur fr.php.net :
    Cette fonction est OBSOLETE depuis PHP 5.3.0 et a été SUPPRIMEE depuis PHP 6.0.0. Nous vous encourageons vivement à ne plus l'utiliser.
    J'ai essayé de déclarer la classe avant le session_start(), mais j'ai toujours la meme erreur... Après je peux garder l'id en session et recréer à chaque fois mon objet, mais c'est lourd...

  7. #7
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    tu n'as pas besoin d'utiliser "serialize"
    essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($login) {
        $_SESSION["utilisateur"] = new Utilisateur($id);
    }
     
    if (isset($_SESSION["utilisateur"])) {
        $user = $_SESSION["utilisateur"];
    }

Discussions similaires

  1. Objet Session avec plusieurs adresses IP
    Par Aquellito dans le forum ASP
    Réponses: 3
    Dernier message: 31/01/2012, 20h00
  2. Interets a serializer un objet en session ?
    Par newbie_php dans le forum Langage
    Réponses: 4
    Dernier message: 10/01/2010, 17h28
  3. stockage objet session avec attribut private : KO
    Par kaboume dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2007, 11h32
  4. Démarrer automatiquement une session avec pass
    Par cyberman.inc dans le forum Windows XP
    Réponses: 3
    Dernier message: 07/08/2005, 17h55
  5. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 10h28

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