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 :

Serialisation d'instance d'object et methode POST


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut Serialisation d'instance d'object et methode POST
    Bonjour,

    Je me suis mis depuis peu a la programmation objet en php, donc il y'a surement des concepts
    ou des subtilites que doit procurer php, mais je ne le sais pas encore, pardonnez moi d'avance

    Alors voila le probleme,
    Dans une page de vue, je liste les utilisateurs du site et au passage je serialise leur instance respective et je fou ca dans un input hidden, ca donne un truc comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $tmp = unserialize ($user);
    ?>
    <tr>
    <td><?php echo $tmp->login_get ()?></td>
    <td><?php echo $tmp->rank_get ()?></td>
    <td>
            <form action="mon_lien" method="post">
            <input type="hidden" name="account" value='<?php echo $user?>'/>
            <input type="submit" value="Changer le statut"/>
            </form>
    </td>
    <td>
    Jusque la je suis sur de l'instegrite de mes donnes puisque les getters que j'utilise de "$tmp" font leur job correctement.

    Apres dans "mon lien", j'ai un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     $user = unserialize  ($_POST['account']);
            if ($user->lvl_get () >= $this->user_get ()->lvl_get ())
                 $this->render ('main/wrong_account');
    La je prend un beau message qui me dit que $user n'est pas un objet et que le getter foire.
    Donc mon probleme vient du contenu de $_POST['account'].

    J'ai tout essaye de ce que j'ai pu voir sur le web, j'ai emleve les slahs avec la fonction qui va bien, virer les magic quote de mon serveur., htmlspecialschars (), enfin pleins de trucs..
    J'avoue que je me comprend pas trop..

    Si quelqu'un a une idee, je veux bien de l'aide...

    Pour finir, un petit vardump de ma variable de POST

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string(401) "O:4:"User":10:{s:9:"�User�id_";s:2:"25";s:12:"�User�login_";s:4:"titi";s:10:"�User�lvl_";s:1:"1";s:12:"�User�email_";N;s:20:"�User�questionnaire_";N;s:11:"�User�time_";N;s:18:"�User�proposition_";N;s:13:"�User�action_";N;s:18:"�User�am_i_playing";N;s:13:"am_i_playing_";b:0;}"
    J'imagine que ca vient des carateres que je n'interprete pas correctement mais comment remedier au probleme...

    Merci

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Moumoutte Voir le message
    Jusque la je suis sur de l'instegrite de mes donnes
    D'un point de vue sécurité non.

    La je prend un beau message qui me dit que $user n'est pas un objet et que le getter foire.
    Peux-tu nous donner le msg précis ?
    As-tu correctement défini/inclu la classe avant de délinéariser $_POST['account'] ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Séb. Voir le message
    D'un point de vue sécurité non.


    Peux-tu nous donner le msg précis ?
    As-tu correctement défini/inclu la classe avant de délinéariser $_POST['account'] ?
    Oui d'un point de vue securite, je suis d'accord, je parlais simplement du moment ou j'applique ma methode...

    Oui je suis sur de l'inclusion de ma classe, mon dispatcher s'occupe de ca avant toute chose

    Voici le message que j'obtiens :
    Fatal error: Call to a member function lvl_get() on a non-object
    EDIT : Je suis sur que le "lvl_get ()" correspondant est bien celui associe a $user, quand j'enleve tous les apelles de methode de $user, je n'ai plus de message d'erreur.

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Tiens, il y a une entité HTML après User.
    Solution rapide : passe ta chaîne au html_entity_decode( ).
    Solution pérenne : identifier comment cette entité est arrivée là et éviter que cela ne se reproduise.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Tiens, il y a une entité HTML après User.
    Solution rapide : passe ta chaîne au html_entity_decode( ).
    Solution pérenne : identifier comment cette entité est arrivée là et éviter que cela ne se reproduise.
    J'ai bien passe ma chanine avec un html_entity_decode () mais rien n'y fait apparement toujours le meme message d'erreur.

    Au passage qu'apelles-tu une entite HTML ?

    Je te remercie de tes reponses et de celles qui viendront

  6. #6
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Moumoutte Voir le message
    J'ai bien passe ma chanine avec un html_entity_decode () mais rien n'y fait apparement toujours le meme message d'erreur.
    Peux-tu copier/coller ici la chaîne obtenue après le html_entity_decode( ) ?

    Au passage qu'apelles-tu une entite HTML ?
    Ce sont les &...; qu'on voit un peu partout dans la chaîne.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Peux-tu copier/coller ici la chaîne obtenue après le html_entity_decode( ) ?


    Ce sont les &...; qu'on voit un peu partout dans la chaîne.
    voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump (html_entity_decode ($_POST['account']));
    et le resultat, qui ne change pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    string(431) "O:4:\"User\":10:{s:9:\"�User�id_\";s:2:\"27\";s:12:\"�User�login_\";s:6:\"ronald\";s:10:\"�User�lvl_\";s:1:\"0\";s:12:\"�User�email_\";N;s:20:\"�User�questionnaire_\";N;s:11:\"�User�time_\";N;s:18:\"�User�proposition_\";N;s:13:\"�User�action_\";N;s:18:\"�User�am_i_playing\";N;s:13:\"am_i_playing_\";b:0;}"
    edit : Pour les \" j'ai rajoute les magic quotes, mais je pense bien avant de deseraliser a stripslashes() ma chaine

  8. #8
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Bizarre, tu as toujours des &# 65533 ;. De plus tu as des \ qui sont apparus !!
    Va falloir tracer ton objet, du form avant linéarisation jusqu'à l'affichage.
    Passes-tu par un framework ? Il y a peut-être des plugins/filtres qui agissent à ton insu et altèrent les données.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Moumoutte Voir le message
    edit : Pour les \" j'ai rajoute les magic quotes, mais je pense bien avant de deseraliser a stripslashes() ma chaine
    Les magic-quotes c'est mal.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Bizarre, tu as toujours des &# 65533 ;. De plus tu as des \ qui sont apparus !!
    Va falloir tracer ton objet, du form avant linéarisation jusqu'à l'affichage.
    Passes-tu par un framework ? Il y a peut-être des plugins/filtres qui agissent à ton insu et altèrent les données.
    Non je ne passe pas par un framework (a mon grand desespoir... mais bon...)
    Pour ce qui est des magic quotes, je ne savais pas mais j'en lirais plus une fois que j'aurais regler mon bug.

    Pour ce qui est de tracer l'object, en fait le recupere deja une versions serialise qui vient d'un tableau, celle la meme que je mets directement dans mon input d'ailleurs.

    Est ce que ca pourrait venir de la ?

  11. #11
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Je ne sais pas.
    Pourrais-tu fournir un script fonctionnel illustrant le bug que je pourrais copier/coller pour test en local ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  12. #12
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Je ne sais pas.
    Pourrais-tu fournir un script fonctionnel illustrant le bug que je pourrais copier/coller pour test en local ?
    Dans le systeme que j'ai mis en place, toutes mes urls sont redirigees vers mon dispatcher, du coups, te fournir un truc qui marche ... a apart mon code... je vois pas bien

    Edit : quand je regarde mon rendu du listing j'ai deja des entites html, j'imagine que c'est deja pas normal...., pourtant ma serialisation sur la variable que je veux faire passer est correcte...

  13. #13
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 50
    Points : 38
    Points
    38
    Par défaut
    J'ai resolu le probleme

    L'ecriture de ma variable serializee contient en effet des caracteres speciaux, des entites html html peut etre.
    De ce fait quand j'ecris ma variable je lui passe d'abord un coup de urlencode ()
    Ensuite une fois que je la recupere dans le POST, je lui mets un coup de urldecode ()

    C'est pas tres joli, enfin ca un paquet de traitement tout ca....
    Mais j'ai pas mieux pour l'instant, si quelqu'un a mieux a proposer

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

Discussions similaires

  1. [HTTP]passage de parametres via la methode post
    Par abdou.sahraoui dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 03/03/2008, 14h11
  2. Envoi incomplet avec methode post
    Par Tr@nkill dans le forum ASP
    Réponses: 8
    Dernier message: 16/05/2005, 12h14
  3. Protocole HTTP: methode POST
    Par Nyx dans le forum Général Conception Web
    Réponses: 15
    Dernier message: 01/04/2005, 17h45
  4. [Servlet] Form. Methode POST - Erreur 405
    Par Johnbob dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/11/2004, 16h46
  5. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03

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