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 :

[Tableaux] Récupération des variables d'un serialize()


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut [Tableaux] Récupération des variables d'un serialize()
    Bonjour,

    j'aimerais savoir s'il était possible à partir d'une chaîne contenant une représentation linéaire d'une variable ($truc) de récupérer les variables :

    J'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo serialize($truc);
    // affiche : a:3:{s:4:"mode";s:5:"admin";s:2:"id";i:0;s:3:"nom";s:8:"MyName";}
    et j'aimerais avoir cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mode = "admin";
    $id = 0;
    $nom = "MyName";
    Merci d'avance
    @+

  2. #2
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876

  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    oui ça ok...

    mais dans mon cas, l' unserialize() me retourne "Array".
    Moi, j'aimerais avoir les variables contenu dans ce tableau avec le bon typage...

  4. #4
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    http://php.net/list

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    list($var1, $var2, $var3) = unserialize($serialized);

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    tu as extract aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extract(unserialize($ta_chaine))
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  6. #6
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    perdu |PaRa-BoL....

    Fallait voir du coté d' extract() (que j'ai trouvé grâce à ton lien vers list() )
    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
    <?php
    $truc = array (
    	'mode' => "admin",
    	'id' => 0,
    	'nom' => "MyName"
    );
    $serialize_truc = serialize($truc);
    echo "serialize_truc: ".$serialize_truc."<br />";
    // affiche : a:3:{s:4:"mode";s:5:"admin";s:2:"id";i:0;s:3:"nom";s:8:"MyName";}
     
    $unserialize_truc = unserialize($serialize_truc);
     
    extract($unserialize_truc, EXTR_PREFIX_SAME, "wddx");
    echo $mode."<br />";
    echo $id."<br />";
    echo $nom."<br />";
    ?>
    en plus le typage des variables est bon ! J'ai vérifié avec gettype($id) qui m'indiqué bien Integer....

    Merci pour ton aide.
    @+

    [EDIT]
    oups... croisement.
    Merci à vous deux !
    [/EDIT]

  7. #7
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Perdu ?
    Je vois pas en quoi list() n'est pas correcte. De plus pourquoi utilises tu le prefix wddx ? Parce que c'est dans l'exemple de la doc :p
    Mais il est vrai que extract est plus pratique pour garder le bon nom de variables.

  8. #8
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    effectivement, pas "perdu"
    Les 2 sont valables et différents.
    Le point principal est qu'avec list, tu as un contrôle total, avec extract non, notamment avec des variables qui pourraient déjà existées et qui seraient alors écrasées par le extract.
    Par contre, extract conserve mieux les noms et types.
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  9. #9
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    perdu parce que extract() correspond exactement à mes attentes....

    voici mon code finale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // récupération des variables de sessions
    $allVars = $session->get_all_vars();
    extract($unserialize_truc, EXTR_PREFIX_ALL, "admin_");
    qui comme vous l'aurez compris récupère mes variables de sessions...

    @+

  10. #10
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    sauf qu'apparemment, PHP n'aime pas le préfixe "admin_"
    Avec le préfixe simple "admin", ça marche ...

    [EDIT]
    j'ai rien dit....
    l'underscore s'y insére automatiquement...
    [/EDIT]

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

Discussions similaires

  1. [Tableaux] Récupération des données d'un formulaire
    Par projetM dans le forum Langage
    Réponses: 3
    Dernier message: 22/05/2006, 00h01
  2. [Tableaux] récupération des champs par $_POST
    Par jeanfrancois dans le forum Langage
    Réponses: 3
    Dernier message: 11/05/2006, 17h22
  3. Réponses: 5
    Dernier message: 14/02/2006, 18h52
  4. Réponses: 21
    Dernier message: 05/02/2006, 17h37
  5. [C#] Récupération des variables system...
    Par smyley dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/08/2005, 11h39

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