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 :

Mystère avec serialize/unserialize


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut Mystère avec serialize/unserialize
    Salut à tous.

    Je viens de transférer mon site d'un hébergeur vers un autre. Sur l'ancien, le site fonctionne nickel mais sur le nouveau, je viens de mettre le doigt sur un mystère qui me dépasse : je serialize plusieurs tableaux dans des champs "hidden" avant de soumettre mon formulaire. Code ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <? print_r($idstud); ?>
    <input type="hidden" name="oldstatus" value='<?=serialize($oldstatus)?>'>
    <input type="hidden" name="idabs" value='<?=serialize($idabs)?>'>
    <input type="hidden" name="plan" value='<?=serialize($plan)?>'>
    <input type="hidden" name="idstud" value='<?=serialize($idstud)?>'>
    <input type="hidden" name="cpt" value='<?=$i?>'>
    <input type="hidden" name="datejour" value='<?=Date("Y-m-d")?>'>
    <input type="hidden" name="chro" value='<?=$chro?>'>
    <input type="hidden" name="classe" value='<?=$rid?>'>
    <input type="hidden" name="uid" value='<?=$uid?>'>
    $idabs et $idstud sont deux tableaux remplis par une boucle selon des valeurs qui viennent d'une base MySQL.
    Le print_r($idstud) est là pour test. Il affiche bien un tableau avec les bonnes valeurs.

    Le script qui récupère le formulaire désérialise les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $idstud = unserialize($_POST["idstud"]);
    $idabs = unserialize($_POST["idabs"]);
    $date = $_POST["datejour"];
    $chro = $_POST["chro"];
    $classe = $_POST["classe"];
    $uid = $_POST["uid"]; // Le prof
     
    echo "idabs[] : ";
    print_r($idabs);
    echo "<br />";
     
    echo "idstud[] : ";
    print_r($idstud);
    echo "<br />";
    ... le tableau "idabs" contient bien les valeurs que j'attends mais "idstud" est vide !!

    Qu'en pensez-vous ?

  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
    Que vaut ton istud dans le formulaire ?
    Que vaut-il avant le unserialize ?

    En relisant la doc, je te rappelle qu'il ne faut pas faire ce que tu fais, a savoir passer des données utilisateur dans unserialize, pour des questions de sécurité.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Que vaut ton istud dans le formulaire ?
    Que vaut-il avant le unserialize ?
    IdStud est un tableau de n éléments (n aléatoire) rempli par le résultat d'une requête SQL. Il contient un ensemble de id (integer) qui représente la liste des étudiants retournée par la requête.
    Avant la sérialisation, idstud contient bel et bien la liste en question mais dans le script qui récupère la variable, avant unserialize, justement, il ne contient plus rien !

    En relisant la doc, je te rappelle qu'il ne faut pas faire ce que tu fais, a savoir passer des données utilisateur dans unserialize, pour des questions de sécurité.
    Je n'ai pas le choix. As-tu une autre solution ?

  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
    La doc propose de faire du json.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué Avatar de Laskar
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2002
    Messages : 228
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par sabotage Voir le message
    La doc propose de faire du json.
    Même soupe avec json ! ...
    J'ai fini par encoder la variable et ... ça marche !
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="idstud" value="<?=serialize($idstud)?>">
    ne fonctionne pas mais ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="idstud" value="<?=base64_encode(serialize($idstud))?>">
    avec le script qui récupère le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $idstud = unserialize(base64_decode($_POST["idstud"]))
    ... marche très bien.

    Les voies du PHP sont impénétrables !

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

Discussions similaires

  1. [FTP] Mystère avec ftp_connect
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 17/01/2008, 14h43
  2. probleme avec serialize dans formulaire
    Par shelko dans le forum Langage
    Réponses: 2
    Dernier message: 05/08/2007, 11h28
  3. [Tableaux] problèmes avec serialize
    Par d0mii dans le forum Langage
    Réponses: 3
    Dernier message: 15/05/2007, 11h02
  4. [Système] problème de quote avec serialize
    Par vinze dans le forum Langage
    Réponses: 1
    Dernier message: 29/04/2007, 14h51
  5. [Cookies] Pb avec Serialize / Unserialize
    Par Romalafrite dans le forum Langage
    Réponses: 2
    Dernier message: 24/11/2006, 12h12

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