[PROG] Le Defi Geek #3, ou comment faire des redirections HTTP avec des valeurs de POST

Bonjour à tous, 

defi-geek-3-redirection-header-avec-post

Désolé pour le retard, j’avais dit mercredi midi, mais je n’avais pas précisé où sur la planète … Dans mon cas je suis même en avance …

Bon bref osef, cette semaine le défi geek va peut être en faire rire certain, mais je pense qu’il pourrait être utile à un paquet de monde, car il y a peut de doc FR claire sur le sujet.

Il y a deux semaines, je me suis cassé les dents à essayer de faire une redirection PHP avec des valeurs de POST…

Je n’y suis pas arrivé, sachant que j’avais juste la fonction header() sous la main et je ne voulais pas créer tout un bordel de socket… . J’ai lu, je ne sais, plus ou que c’est impossible à faire, mais cela me semble quand même bizarre…

Donc, voilà, le défi geek de cette semaine c’est de faire un script le plus propre possible gérant les redirections HTTP avec headers et des valeurs posts. Si ce n’est pas possible, je vous propose alors de faire un petit hack le plus élégant possible !

Je vous rappelle que l’on ne gagne à peu près rien, mis à part quelques BL et la reconnaissance de ses compères geek. (Certaines choses n’ont pas de prix … )

À vos claviers,  attention Kane et Skreo trainent dans le coin !

Bonne journée à tous, 

Enjoy,

Jaguie

Partager et découvrir :
  • email
  • Twitter
  • PDF
  • Facebook
  • Netvibes
  • Posterous
  • Bluegger
  • Fuzz
  • Tapemoi
  • Scoopeo
  • Zataz
  • MisterWong Fr
  • Digg
  • Reddit
  • Technorati
  • Wikio
  • Wikio IT
  • Yahoo! Buzz

Billets similaires

Tags: PHP // 21 Commentaires »

21 Réponses pour “[PROG] Le Defi Geek #3, ou comment faire des redirections HTTP avec des valeurs de POST”

  1. Graaa j’ai actualisé plein de fois la page dans les alentours de midi :p
    Ce que tu demandes n’est pas possible à ma connaissance, et c’est tant mieux. (à moins de faire une connexion socket comme tu dis)
    T’imagine ce qu’on pourrait faire sinon ? Pire que le clickjacking…

  2. hey nice bro …

    Vouaip je vois les problèmes que cela pourrait amener. Mais par contre si l’on reste dans le même domaine, je pense que cela devrait être possible car ça permettrait de faire des architecture élégantes… enfin, avis personnel !

    Merci de ta réactivité, et encore désolé pour le retard !

    On est donc à la recherche d’un hack !

  3. Par contre ce que tu peux faire c’est faire un formulaire et l’envoyer automatiquement par javascript. Ca reviendra à faire une redirection avec POST et ça évite de faire une connexion socket.
    Exemple : http://pastebin.com/f3ab4a320

  4. Voici une solution qui peut t’aider (ou pas) :
    donc voici une première page qui contient un formulaire et traite les données puis rediriges http://pastebin.com/m43517e33
    et ensuite la page qui réceptionne les données pour les afficher http://pastebin.com/m5d2d095e
    voici donc une solution qui n’est pas forcement des plus pratiques, mais qui permet tout de même de faire passer les données avec cette redirection. J’espère donc que ce soit le genre de hack que tu cherches ^^

  5. Tout est dis… t’auto rempli un form en php et tu l’auto submit en JS…
    OU PAAAAAS ! XD

    [PasteBin]

    Et tu l’invoque comme ça :
    [PasteBin]

  6. Bon, je propose un truc, comme j’ai besoin de meubler mon « portfolio », Jaguie, tu pose des problèmes et moi j’y répond peinard XD .

    Aller, si ça continue je laisserai 24H aux autres pour trouver la solution… XD

  7. Au fait, désolé, j’ai utilisé un socket, mais bon, c’est plutôt « clean ».

  8. Ah oui, puis si vous n’utilisez pas le Zend Framework, vous pouvez toujours remplacer (!is_empty($reqbody)) par ($reqbody != null && strlen(reqbody) > 0)

  9. http://kanehavok.pastebin.com/f2d0499e8

    P.S. dommage qu’il n’y ai pas de bouton edit

  10. Bientôt on dira des défis de chrogeek que c’est un jeux qui se joue à trois :
    Jaguie pose les problème, Skreo (au taquet) et Kane y répondent et à la fin c’est Kane qui gagne!

  11. @Arcus : Lol ouais on est 2 au taquet ^^
    Kane a gagné ? Hmm moi je dis que ça dépend de l’utilisation voulu. Ce défi est trop ambiguë, je mets mon veto !

  12. http://www.dailymotion.com/video/x8elc_mozinor-le-chinois-est-mort_creation

    C’est chuck qui m’a appris le PHP XD….

    bon, aller, le prochain je vous laisse 12h.

  13. Merci à tous pour votre participation :)

    Je ferais un billet bilan ce week end ou la semaine prochaine :)

    J’ai déjà le futur défi dans la tête, celui-ci sera sur du PHP en CLI linux …

    Par contre pour ceux d’après, je n’ai pas des masses d’idée… Je suis preneurs de tout !

    Enjoy :)

  14. Bravo à tous les trois !

    Par contre je ne saisit pas bien l’intérêt de ce type de redirection à travers un formulaire. Une peit explication serait la bienvenue.

  15. Si j’ai bien compris (pas sur….), je pense qu’il y a plus simple avec la classe simplehtmldom et la méthode : file_get_dom()

    Sources :
    http://sourceforge.net/forum/message.php?msg_id=5076162
    http://netevil.org/blog/2006/nov/http-post-from-php-without-curl

  16. Je viens de voir ce poste, j’arrive après la bataille c’est sûr.

    Pour ma part j’avais déjà eu ce problème, et j’avais simplement utilisé une classe basée sur curl (que l’on peut trouver ici : http://www.phpclasses.org/browse/file/15747.html )

    Et pour envoyer du post, plus très difficile :

    $curl = &new Curl_HTTP_Client();
    $result = $curl->send_post_data(« http://monsite.com/blah », $_POST);
    echo $result;

    Par contre, ce n’est pas vraiment une redirection, puisque le client reste sur le serveur d’origine. Le serveur d’origine, au lieu de faire une redirection, joue un rôle de « passerelle », ce qui n’est pas le cas du header(‘Location: …’);

    Celui de Kane n’est pas non plus une vraie redirection.

  17. @Jérémy Faivre tous le monde n’as pas cUrl installé…
    Après pour la redirection… ouai, je vois pas comment faire.

  18. Mieux vaut tard… que jamais………

  19. header(« Location: url », TRUE, 307);

  20. $host = « www.example.com »;
    $path = « /path/to/script.php »;
    $data = « data1=value1&data2=value2″;
    $data = urlencode($data);

    header(« POST $path HTTP/1.1\r\n » );
    header(« Host: $host\r\n » );
    header(« Content-type: application/x-www-form-urlencoded\r\n » );
    header(« Content-length:  » . strlen($data) . « \r\n » );
    header(« Connection: close\r\n\r\n » );
    header($data);

Laissez un commentaire