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 :

Sauvegarde d'une classe dans un cookie [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut Sauvegarde d'une classe dans un cookie
    Bonsoir,

    Voila mon problème est le suivant. J'ai une session contenant une instance d'une classe et je voudrais sauvegarder cette session dans un cookie, seulement lors de la création du cookie j'ai l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: setcookie() expects parameter 2 to be string, object given
    Auriez-vous une idée de comment faire ceci ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Sérialisation (fonction serialize) ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    Non je suis obligé d'utiliser les cookies

  4. #4
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Ce n'est pas ce que fait serialize justement ? Pour une variable de type quelconque, on obtient une chaîne représentant cette même donnée et dont le processus peut être ensuite inversé (désérialisation : fonction unserialize).

    Par contre comment en arrive-t-on à passer d'une session à un cookie ? (ne pas oublier qu'un cookie est normalement limité en taillle - 4 ko)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    Et bien en fait je dois faire un mastermind, et le moteur du jeu est une classe. Ensuite il faut que je puisse sauvegarder une partie et la restaurer quand on veut. Et pour faire cela on me demande de sauvegarder la partie dans un cookie.

  6. #6
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Si c'est ce qui est demandé ...

    Donc serialize ne vous convient pas ? Quelle est la forme de la donnée à mettre en cookie (effectuer un var_dump dessus) ? Un code éventuellement (juste la gestion du cookie + sérialisation et désérialisation) ?

    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
    define('COOKIE_NAME', 'test');
     
    class FooBar {
        public $x = 1;
    }
     
    if (!isset($_COOKIE[COOKIE_NAME])) {
        $foobar = new FooBar;
        setcookie(COOKIE_NAME, serialize($foobar), time() + 365 * 24 * 60 * 60);
    } else {
        /*$foobar = unserialize($_COOKIE[COOKIE_NAME]);*/
        $foobar = get_magic_quotes_gpc() ? unserialize(stripslashes($_COOKIE[COOKIE_NAME])) : unserialize($_COOKIE[COOKIE_NAME]);
        printf('(%s) x = %d', get_class($foobar), $foobar->x);
        var_dump($foobar);
    }
    (FooBar) x = 1
    object(FooBar)#1 (1) { ["x"]=> int(1) }

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    Ok je vois comment cela marche merci beaucoup Mais je n'arrive pas à comprendre ce que fait cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $foobar = get_magic_quotes_gpc() ? unserialize(stripslashes($_COOKIE[COOKIE_NAME])) ? unserialize($_COOKIE[COOKIE_NAME]);
    Ca ne serait pas un ':' à la place du deuxième '?' dans cette ligne ?

  8. #8
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Oui, c'est bien ça sinon ce n'est plus une structure ternaire (j'avais ajouté à la hâte la prise en compte des magic_quotes_gpc - c'est corrigé).

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 327
    Points : 114
    Points
    114
    Par défaut
    C'est bon ça marche merci beaucoup

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    C'est un objet que tu sauvegarde pas une classe ou alors j'ai rien compris parceque je vois pas comment sauvegarder une classe...

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

Discussions similaires

  1. Sauvegarde des champs d'une classe dans un fichier
    Par AlfredKr dans le forum Débuter
    Réponses: 1
    Dernier message: 15/10/2012, 15h39
  2. [PHP 5.3] Sauvegarder les propriétés statiques d’une classe dans un fichier
    Par geforce dans le forum Langage
    Réponses: 1
    Dernier message: 26/04/2010, 04h05
  3. Sauvegarder une CLASSE dans un fichier ?
    Par supergrey dans le forum C++
    Réponses: 5
    Dernier message: 10/05/2008, 19h33
  4. Sauvegarder/Lire une classe dans un fichier
    Par Rodrigue dans le forum C++
    Réponses: 10
    Dernier message: 10/09/2005, 15h12
  5. [C#] [.NET] Lecture d'une classe dans un fichier
    Par niPrM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/05/2004, 09h57

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