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 l'url


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut Transmettre un objet via l'url
    Bonjour à tous, dans mon application je souhaite passer en parametre à une page un objet, cependant je ne trouve pas la bonne solution j'ai essayé de faire un serialize() suivit d'un urlencode() et de l'inverse dans la page qui récupère l'objet mais rien ne semble fonctionner, si quelqu'un à une idée voici mon code :

    Page qui recupère l'objet et doit le transmettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            $serializedAvatar = serialize($contact->getAvatar());
            $serializedAvatar = urlencode($serializedAvatar);
            echo '<br/><img src="avatar/index/avatar/'.$serializedAvatar.'"/>';
    Page qui réceptionne l'objet et doit l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            $serializedAvatar = $this->_getParam('avatar');
            if (!empty($serializedAvatar)){
                $serializedAvatar = urldecode($serializedAvatar);
                $avatar = unserialize($serializedAvatar);
                $type = $avatar->getType();
                $datas = $avatar->getDatas();

    Merci d'avance pour l'aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut mauvaise idée
    Bonsoir,

    Il ne faut pas passer des données sérialisées car elles passent côté visiteur et donc cela pose un problème de sécurité.

    Il faut ranger ces données en session à la place, ce qui va dans la foulée simplifier ton problème .

    Bon courage,

    Xavier

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut
    Niveau sécurité c'est pas vraiment un problème vu que je veux juste passer un objet Avatar qui contient les données binaire d'une image ainsi que son type mime!

    Si je pouvais régler le problème sans passer par les sessions ça m'arrangerais

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut point de vue
    Ton image est un contenu binaire donctu le ranges dans une chaine et pour l'afficher tu fais un echo dessus.

    Utiliser sur un contenu non vérifié qui est passé par l'utilisateur, c'est une faille de sécurité, même si tu n'en as pas conscience.

    Pourquoi pas les sessions ?

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut
    En effet ^^ mais l'idée était juste de tester pas forcement d'utiliser en production!

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut oki
    bon si c'est juste pour tester...

    si j'ai bonne mémoire certains octets sont détruits lors de la sérialisation de données binaires, il faut les encoder en base 64 avec la fonction base64_encode pour éviter ce problème et inversement les récupérer avec un base64_decode.

    ce tips marche aussi pour les types blob dans mysql ...

    xavier

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut
    Rien à faire je n'arrive pas à transmettre ces fichus données binaire

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut probleme de taille de données
    J'oublie tout le temps le chiffre précis mais il existe aussi une limite de taille pour les données transmises en GET

    Il pourrait être bon de vérifier...

    Et puis tant que j'y suis, si tes données sont en UTF-8 il se pourrait que tu ais un BOM(byte order mark) qui se soit glissé en début de ton avatar, ce qui casse l'entête de fichier image et qui par conséquent l'empêche de s'afficher.

    Ou encore un caractère d'espacement au début de ton script, ce qui revient un peu au même en terme de cause conséquence.

    Xavier

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut
    Oui c'est exactement ce que j'ai pensé, je dois la dépasser largement... Le truc c'est que j'utilise le framework zend et ça m'ennuie de mettre en place la gestion des sessions :/

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 83
    Par défaut Ben l'utilise pas
    Je devrais pas dire ça mais si c'est juste pour tester, comme le Zend ce n'est qu'une surcouche à PHP, tu fait un gros $_SESSION, comme avant sans Zend et voilà ... et ça marche pour tout l'ancien PHP, c'est juste pas propre caca comme code, le mieux étant de faire l'effort de passer par les outils fournis

    Xavier

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Par défaut
    J'ai passer en session et rien à faire :/ je comprend pas d'ou peu venir le problème

Discussions similaires

  1. [Système] transmettre une variable via url sous Mozilla
    Par kiloone08 dans le forum Langage
    Réponses: 6
    Dernier message: 13/04/2007, 10h53
  2. Passage de paramètres via l'URL
    Par carolinebelle dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/08/2005, 16h16
  3. transmettre une valeur par l'url
    Par Destampy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 07/06/2005, 15h57
  4. Transmettre une variable via un lien href
    Par developpeur_mehdi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/01/2005, 14h49
  5. [net] recuperer les proprietes d'un File via une URL
    Par mma dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 06/05/2004, 12h45

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