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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Envoyer un tableau multidimentionnel via POST


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut Envoyer un tableau multidimentionnel via POST
    Bonsoir,

    Je reviens parmi vous car je me heurte à un problème avec "serialize" - "unserialize".
    J'ai trouvé qu'il fallait utiliser ces fonctions pour envoyer le tableau avec un POST.

    Le tableau sérialisé arrive bien avec le POST, mais le "unserialize" ne reconstruit pas le tableau

    Voici le code raccourci pour envoyer le tableau :

    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
    18
    19
    20
    21
    22
    23
     
    // ----- Créer le tableau
    $array_liste_mail_excel[$nbr_mail][email]=$liste_mail_mail;
    $array_liste_mail_excel[$nbr_mail][prenom]=$liste_mail_prenom;
    $array_liste_mail_excel[$nbr_mail][nom]=$liste_mail_nom;
     
    // ----- Envoyer le tableau via POST
    $array_liste_mail_excel_post=serialize($array_liste_mail_excel);
    print "<form name=\"fichier_excel\" action=\"./pages/listings/liste_email_excel.php\" method=\"post\" target=\"_blank\">";
    	print "<font class=\"texte_Vert_13-1\">Créer un fichier excel</font> &nbsp;&nbsp;";
    	print "<input type=\"hidden\" name=\"liste_email\" value='$array_liste_mail_excel_post' />";
    	print "<input class=\"enregistrer_petit\" type=\"submit\" value=\"          \" title=\"Créer\" />";
    print "</form>";
    echo $array_liste_mail_excel_post // Affiche bien les valeurs sérialisées du tableau
     
    // ----- Récupérer le tableau posté
    if (isset($_POST['liste_email'])) { $liste_email=$_POST['liste_email']; $creer_liste=1; }
    else { $creer_liste="non"; }
    echo $liste_email; // affiche bien la même chose que le "serialize"
     
    print "<pre>";
    print_r(unserialize ($liste_email)); // n'affiche pas la valeur du tableau : rien en fait
    print "</pre>";
    Je ne vois pas trop mon erreur, une aide serait la bienvenue.

    @+
    DDAWEB

  2. #2
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    Bon ben ...

    Comment dire ... cela fonctionne correctement dès que j'ai remplacé l'aposthrophe dans un nom par un autre caractère.
    Pour éviter les problèmes futurs, je fais la même chose pour les prénoms.

    Je clôture donc ce post

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    je t'alerte quand même sur un énorme trou de sécurité dans ton code : utiliser unserialize() sur des données en provenance d'un navigateur peut s'avérer catastrophique.
    Je te conseillerai de passer par un autre moyen comme une session ou formater tes données de manière à pouvoir reconstruire un tableau en te passant de serialize et unserialize

  4. #4
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Salut,

    je t'alerte quand même sur un énorme trou de sécurité dans ton code : utiliser unserialize() sur des données en provenance d'un navigateur peut s'avérer catastrophique.
    Je te conseillerai de passer par un autre moyen comme une session ou formater tes données de manière à pouvoir reconstruire un tableau en te passant de serialize et unserialize
    Peux-tu développer ce trou de sécurité.
    Il y transite des adresse mails avec nom et prénom, je tiens à préserver ces personnes.

    Utiliser une session, je ne sais pas si c'est possible dans mon cas :
    - J'utilise des session sur le site ... jusque là pas de problème
    - Le array utilisé est via un "_blank" sur une des pages du site ... je ne crois donc pas pouvoir récupérer la session, session liée à un domaine de l'url si je ne me trompe pas.

    EDIT : Cet array reconstruit me permet de créer un fichier excel, aucune action sur la DB
    EDIT 2 : Comme je le craignais, je ne sais pas récupérer la variable session

    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
    18
    19
    20
    21
    22
    23
     
    // ----------- Mise en session pour envoyer
    $_SESSION['liste_email']=$array_liste_mail_excel;
     
    // --------------- Faire un fichier Excel
    //$array_liste_mail_excel_post=serialize($array_liste_mail_excel); // ----- Partie mise inactive
    print "<form name=\"fichier_excel\" action=\"./pages/excel/liste_email_excel.php\" method=\"post\" target=\"_blank\">";
    	print "<font class=\"texte_Vert_13-1\">&nbsp;&nbsp;<b>Créer un fichier excel</b></font> &nbsp;&nbsp;";
    	//print "<input type=\"hidden\" name=\"liste_email\" value='$array_liste_mail_excel_post' />"; // ----- Partie mise inactive
    	print "<input class=\"enregistrer_petit\" type=\"submit\" value=\"          \" title=\"Créer\" />";
    print "</form>";
    print "<div class=\"div_space_10\">&nbsp;</div>";
     
     
    // ---------- Réception des données
    /*if (isset($_POST['liste_email'])) { $liste_email_post=$_POST['liste_email']; $creer_liste=1; } // ----- partie mise inactive
    else { $creer_liste="non"; }
    $liste_email=unserialize ($liste_email_post);
    */
    if (isset($_SESSION['liste_email'])) { 
    	$liste_email=$_SESSION['liste_email'];
    	$creer_liste=1;
    }
    Je vais essayer d'envoyer sur une page du site ....

  5. #5
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    Voilà en fait la session fonctionne très bien, même avec le "_blank" à partir du moment où je n'oublie pas de mettre "session_start();" en début de page

    Je ne serialize plus du coup

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

Discussions similaires

  1. Transmettre tableau php via post
    Par Bugger24 dans le forum Langage
    Réponses: 2
    Dernier message: 24/09/2010, 07h06
  2. envoyer des données via POST
    Par sohaieb dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/05/2010, 01h11
  3. Passer tableau JS via requête post
    Par yann0807 dans le forum jQuery
    Réponses: 1
    Dernier message: 13/05/2009, 13h12
  4. Envoyer un tableau par la méthode POST
    Par bourbita.thameur dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2009, 11h33
  5. Réponses: 7
    Dernier message: 14/08/2007, 17h45

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