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 :

transmettre un objet via un formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut transmettre un objet via un formulaire
    Salut tout le monde,
    j'essaye depuis un moment de récupérer un objet transmis via un formulaire mais je n'y arrive pas. Après quelques tests, je constate que mon objet est altéré au cours de l'envoi. Mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(isset($_GET['membre']))
    {
            $membre = urldecode($_GET['membre']);
    	echo $membre;
            echo '<div><p>Voulez vous vraiment supprimer ce membre?
    		<input type="hidden" name="membre" value="'.$_GET['membre'].'" />
    		<input type="hidden" name="action" value="supprimer" /></p></div>';
            }
    notez que dans ce code, l'objet a déjà été serializé et encoder sur une autre page et envoyé via l'url sur cette page qui est en fait une popup
    Et sur la page de soumission j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo $_POST['membre'];
    $membre = urldecode($_POST['membre']);
    echo stripslashes($membre);
    Les deux echo m'affichent O:6 O:6 comme si le contenu de l'objet avait disparu pendant l'envoi....
    Quelqu'un pourrait il m'expliquer ce qui ce passe?? et me proposer un solution
    Merci

  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
    Tu ne desérialise pas l'objet ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Si je l'ai de mon coté, mais en fait c'est à la deserialisation que j'obtiens une erreur, c'est pour ça que j'affiche l'objet non deserializé pour voir ce qui s'est passé.
    Mais je constate que l'objet est altéré :
    contenu a l'envoi:
    O:6:"Membre":9:{s:17:"Membre_idMembre";s:2:"55";s:18:"Membre_nomMembre";s:9:"Hounsinou";s:21:"Membre_prenomMembre";s:8:"clarisse";s:24:"Membre_naissanceMembre";s:10:"0000-00-00";s:19:"Membre_mortMembre";s:10:"0000-00-00";s:19:"Membre_sexeMembre";s:1:"M";s:24:"Membre_ascendantMembre";s:2:"28";s:23:"Membre_conjointMembre";s:2:"46";s:25:"Membre_generationMembre";N;}

    contenu a la reception: O:6

  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
    J'ai voulu faire le test exact mais je ne peux pas deserialisé l'objet tel que tu nous l'as mis.

    Pourquoi tu mets un stripslashes ?
    Si les magic_quotes sont actifs sur ton serveur, desactive les.

    Sinon quand même sur le fond, une URL n'est pas faire pour transporter un objet serialisé. Tu devrais envisager d'utiliser une session.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    ...Or je n'ai pas vraiment le choix vu que ma fenêtre est une popup pour confirmer une suppression de données (supprimer le membre)....




    [EDIT] Oups !
    J'ai cliqué sur "Modifier..." au lieu de "Répondre avec citation"...
    Désolé.
    jreaux62

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Génie Voir le message
    ...Or je n'ai pas vraiment le choix vu que ma fenêtre est une popup pour confirmer une suppression de données (supprimer le membre)....
    alors le seul élément nécessaire à transmettre est : Membre_idMembre.


    Si tu as besoin de ré-afficher les données dans la popup, il suffit de faire la bonne requête.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Donc on ne peut pas transmettre un objet sérialisé via un champ de formulaire(type = hidden)?

  8. #8
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Si par POST, ça marche bien. (tu peux même envoyer l'objet en question, par exemple en JSON, par POST, sans avoir à le sérialiser... pratique avec JQUERY en Ajax, par exemple.)
    Mais je suis plutôt d'accord avec Sabotage. Si tu peux le mettre en SESSION, c'est sans doute plus propre...
    (mais bon, dans ton cas, en le sérialisant dans un input hidden et par POST, ça doit marcher)
    My daughter, my laptop, my bike and my double-sticks...

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par kalimukti Voir le message
    (mais bon, dans ton cas, en le sérialisant dans un input hidden et par POST, ça doit marcher)
    Bah on va dire que j'ai pas de chance(mon serveur a peut etre une dent contre moi )!!!
    parce que c'est exactement ce que j'ai fait et à la réception il ne me restait plus que O:6:.

    Citation Envoyé par kalimukti Voir le message
    Mais je suis plutôt d'accord avec Sabotage. Si tu peux le mettre en SESSION, c'est sans doute plus propre...
    Vu mon objectif ce sera un peu compliqué d'utiliser les sessions...
    Je vais plutôt passer uniquement l'id, et ensuite l’utiliser pour refaire la requête(chose qui m’embête terriblement!!!mais bon...)

    Sinon est ce que le probleme ne pourrait pas venir de l'attribut value??

  10. #10
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut unserialize en php
    Hello,
    un doute me vient, la classe de ton objet est déclarée dans le fichier où tu réceptionne ton POST ?
    Afin de pouvoir désérialiser (unserialize()) un objet, la classe de l'objet doit être définie, pour permettre sa reconstruction. En d'autres termes, si vous avez un objet de la classe A et le sérialisez, la représentation linéaire obtenue fera référence à la classe A et contiendra toutes ses variables. Si vous voulez pouvoir désérialiser cette représentation linéaire dans un endroit où la classe A n'est pas définie (dans un autre fichier par exemple), alors vous devrez redéclarer la classe A avant de procéder à la désérialisation de sa représentation linéaire.
    (source http://php.net/manual/fr/language.oo...ialization.php)

    [EDIT]
    Bon, à côté de ça, en reregardant ton code, je crois que tu as la bonne intuition avec value:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="'.$_GET['membre'].'"
    regarde la source de l'html gnéré: vu que tu as des " dans ton objet sérializé, ça oit faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="O:6:"Membre"....
    si tu regardes bien, les " ouvert pour la balise value se referment après 6:, d'où ton résultat... essaye en mettant la valeur de value entre ' au lieu d'entre "....
    My daughter, my laptop, my bike and my double-sticks...

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    merci pour le tuyau, j'ai essayé les (') et j'arrive desormais a recuperer mon objet,
    mais avec des caracteres bizzares (�) a l'interieur...
    Sauriez vous d'ou viennent ces caracters et comment les virer de la?

  12. #12
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut aaaah, les jeux de caractère
    UTF8 d'un côté et iso-latin de l'autre, ou inversement ? (essaye du côté PHP avec un utf8_encode...ou utf8_decode) sur le get de l'objet...
    My daughter, my laptop, my bike and my double-sticks...

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Non non mes deux pages sont en utf8 : <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    voici mon objet à la récupération pour plus de clarté:

    O:6:"Membre":8:{s:17:"�Membre�_idMembre";s:2:"67";s:18:"�Membre�_nomMembre";s:9:"HOUNSINOU";s:21:"�Membre�_prenomMembre";s:6:"joelle";s:24:"�Membre�_naissanceMembre";s:10:"0000-00-00";s:19:"�Membre�_mortMembre";s:10:"0000-00-00";s:19:"�Membre�_sexeMembre";s:1:"F";s:24:"�Membre�_ascendantMembre";s:2:"55";s:23:"�Membre�_conjointMembre";s:2:"60";}

    Les caractères indésirables entourent le mot clé désignant la classe....

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Sans clore le sujet precedent, j'ai un nouveau probleme(j'espere que j'en fait pas trop )

    cette fois ci c'est avec les sessions et je passe mon objet dans un header:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('location:formulaireMembre.php ? idConjoint='.$idConjoint.'&action=modifier&membre='.trim($_SESSION['membre']).'');
    je met le trim pour virer les eventuels (\x) qui auraient pu s'y glisser(j'ai vu ça dans mes recherches)
    et j'ai l'erreur suivante:

    Warning: Header may not contain NUL bytes in C:\wamp\www\arbreGenealogique\controleurConjoint.php on line 36

    Bien entendu, j'ai affiché l'objet avant de mettre dans le header et il est nikel.
    Encore une fois je fais appel a votre experience et votre genie...

  15. #15
    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
    Enlève les espaces autour du point d'interrogation.

    Enlève aussi cette verrue
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    merci j'ai enlevé les espaces et virer la verrue,
    mais rien n'y fait, j'ai toujours la meme erreur...
    Sur certains forums ils disent que c'est peut etre des espaces a la source du probleme
    or il n'y a pas d'espace dans mon objet...

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

Discussions similaires

  1. [PHP 5.3] Transmettre un objet via l'url
    Par shadypierre dans le forum Langage
    Réponses: 10
    Dernier message: 26/03/2010, 22h47
  2. Edition d'un objet via un formulaire
    Par monalizzaa dans le forum JSF
    Réponses: 4
    Dernier message: 15/01/2010, 17h07
  3. Transmettre un tableau via un formulaire
    Par Amaury_35 dans le forum Langage
    Réponses: 7
    Dernier message: 04/08/2009, 16h50
  4. transmettre un tableau via un formulaire
    Par laloupiote dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2007, 19h54
  5. [Tableaux] transmettre tableau via un formulaire
    Par calitom dans le forum Langage
    Réponses: 5
    Dernier message: 05/12/2006, 19h30

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