Si je ne me trompe pas dans la compréhension du truc, le plus simple est de changer le code du destinataire et pas le tien. Soit il peut changer la directive dans son php.ini pour que toutes les données POST aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que je ne conseille pas cette option).
Cordialement, -- Olivier Miakinen
Bonjour,
Le 10/10/2011 11:28, Etienne a écrit :
Pour envoyer des requètes POST en PHP j'utilise ce code.
[...]
que j'ai du récupérer il y a longtemps sur Internet !
Sauf qu'aujourd'hui le destinataire de mon message s'attend a trouver
les données dans
$HTTP_RAW_POST_DATA
comment je vais pour des données qui vont arriver dans
HTTP_RAW_POST_DATA ???
Voici ce que je crois comprendre de
<http://fr2.php.net/manual/fr/ini.core.php#ini.always-populate-raw-post-data>.
Si je ne me trompe pas dans la compréhension du truc, le plus simple
est de changer le code du destinataire et pas le tien. Soit il peut
changer la directive dans son php.ini pour que toutes les données POST
aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le
flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du
type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que
je ne conseille pas cette option).
Si je ne me trompe pas dans la compréhension du truc, le plus simple est de changer le code du destinataire et pas le tien. Soit il peut changer la directive dans son php.ini pour que toutes les données POST aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que je ne conseille pas cette option).
Cordialement, -- Olivier Miakinen
Etienne
Le 10/10/2011 11:44, Olivier Miakinen a écrit :
Si je ne me trompe pas dans la compréhension du truc, le plus simple est de changer le code du destinataire et pas le tien. Soit il peut changer la directive dans son php.ini pour que toutes les données POST aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que je ne conseille pas cette option).
Heu ouai. Donc en fait pas question est comment on post quelques chose de telle façon que le PHP de l'autre coté le récupère en lisant le flux php://input.
Par exemple, je reçoit bien les messages (moi) et la donnée se trouve dans $HTTP_RAW_POST il n'y a rien dans $_POST, ni null par ailleurs...
le problème est que je dois générer un réponse identique. c'est a dire que je doit renvoyer ma réponse de telle façon que le destinataire reçoivent ça dans HTTP_RAW_POST_DATA...
Etienne
Le 10/10/2011 11:44, Olivier Miakinen a écrit :
Si je ne me trompe pas dans la compréhension du truc, le plus simple
est de changer le code du destinataire et pas le tien. Soit il peut
changer la directive dans son php.ini pour que toutes les données POST
aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le
flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du
type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que
je ne conseille pas cette option).
Heu ouai.
Donc en fait pas question est comment on post quelques chose de telle
façon que le PHP de l'autre coté le récupère en lisant le flux php://input.
Par exemple, je reçoit bien les messages (moi) et la donnée se trouve
dans $HTTP_RAW_POST
il n'y a rien dans $_POST, ni null par ailleurs...
le problème est que je dois générer un réponse identique.
c'est a dire que je doit renvoyer ma réponse de telle façon que le
destinataire reçoivent ça dans HTTP_RAW_POST_DATA...
Si je ne me trompe pas dans la compréhension du truc, le plus simple est de changer le code du destinataire et pas le tien. Soit il peut changer la directive dans son php.ini pour que toutes les données POST aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que je ne conseille pas cette option).
Heu ouai. Donc en fait pas question est comment on post quelques chose de telle façon que le PHP de l'autre coté le récupère en lisant le flux php://input.
Par exemple, je reçoit bien les messages (moi) et la donnée se trouve dans $HTTP_RAW_POST il n'y a rien dans $_POST, ni null par ailleurs...
le problème est que je dois générer un réponse identique. c'est a dire que je doit renvoyer ma réponse de telle façon que le destinataire reçoivent ça dans HTTP_RAW_POST_DATA...
Etienne
Olivier Miakinen
Le 10/10/2011 11:52, Etienne a écrit :
Si je ne me trompe pas dans la compréhension du truc, le plus simple est de changer le code du destinataire et pas le tien. Soit il peut changer la directive dans son php.ini pour que toutes les données POST aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que je ne conseille pas cette option).
Heu ouai. Donc en fait pas question est comment on post quelques chose de telle façon que le PHP de l'autre coté le récupère en lisant le flux php://input.
Eh bien, d'après la doc déjà citée (ou en suivant les liens, par exemple <http://us.php.net/manual/fr/wrappers.php.php>), si le destinataire lit le flux php://input il aura toutes les données POSTées sans rien avoir de spécial à faire. Il a essayé et ça ne fonctionne pas ? Sinon, pour les trouver dans $HTTP_RAW_POST_DATA, soit il change son php.ini, soit tu lui envoies un type MIME foireux.
Par exemple, je reçoit bien les messages (moi) et la donnée se trouve dans $HTTP_RAW_POST
Ok. Et lui ?
il n'y a rien dans $_POST, ni null par ailleurs...
Ah. Il t'envoie un type MIME foireux ? ;-)
le problème est que je dois générer un réponse identique. c'est a dire que je doit renvoyer ma réponse de telle façon que le destinataire reçoivent ça dans HTTP_RAW_POST_DATA...
Bon, moi je t'en dis ce que j'ai trouvé dans la doc, hein ! Jusqu'à ce matin j'ignorais jusqu'à l'existence de cette variable et de ce flux.
Cordialement, -- Olivier Miakinen
Le 10/10/2011 11:52, Etienne a écrit :
Si je ne me trompe pas dans la compréhension du truc, le plus simple
est de changer le code du destinataire et pas le tien. Soit il peut
changer la directive dans son php.ini pour que toutes les données POST
aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le
flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du
type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que
je ne conseille pas cette option).
Heu ouai.
Donc en fait pas question est comment on post quelques chose de telle
façon que le PHP de l'autre coté le récupère en lisant le flux php://input.
Eh bien, d'après la doc déjà citée (ou en suivant les liens, par exemple
<http://us.php.net/manual/fr/wrappers.php.php>), si le destinataire lit
le flux php://input il aura toutes les données POSTées sans rien avoir
de spécial à faire. Il a essayé et ça ne fonctionne pas ? Sinon, pour
les trouver dans $HTTP_RAW_POST_DATA, soit il change son php.ini, soit
tu lui envoies un type MIME foireux.
Par exemple, je reçoit bien les messages (moi) et la donnée se trouve
dans $HTTP_RAW_POST
Ok. Et lui ?
il n'y a rien dans $_POST, ni null par ailleurs...
Ah. Il t'envoie un type MIME foireux ? ;-)
le problème est que je dois générer un réponse identique.
c'est a dire que je doit renvoyer ma réponse de telle façon que le
destinataire reçoivent ça dans HTTP_RAW_POST_DATA...
Bon, moi je t'en dis ce que j'ai trouvé dans la doc, hein ! Jusqu'à
ce matin j'ignorais jusqu'à l'existence de cette variable et de ce
flux.
Si je ne me trompe pas dans la compréhension du truc, le plus simple est de changer le code du destinataire et pas le tien. Soit il peut changer la directive dans son php.ini pour que toutes les données POST aillent dans $HTTP_RAW_POST_DATA, soit (méthode préférée) il lit le flux php://input. Ou sinon, tu mets un type MIME incorrect au lieu du type MIME correct pour qu'il ne soit pas reconnu (il va sans dire que je ne conseille pas cette option).
Heu ouai. Donc en fait pas question est comment on post quelques chose de telle façon que le PHP de l'autre coté le récupère en lisant le flux php://input.
Eh bien, d'après la doc déjà citée (ou en suivant les liens, par exemple <http://us.php.net/manual/fr/wrappers.php.php>), si le destinataire lit le flux php://input il aura toutes les données POSTées sans rien avoir de spécial à faire. Il a essayé et ça ne fonctionne pas ? Sinon, pour les trouver dans $HTTP_RAW_POST_DATA, soit il change son php.ini, soit tu lui envoies un type MIME foireux.
Par exemple, je reçoit bien les messages (moi) et la donnée se trouve dans $HTTP_RAW_POST
Ok. Et lui ?
il n'y a rien dans $_POST, ni null par ailleurs...
Ah. Il t'envoie un type MIME foireux ? ;-)
le problème est que je dois générer un réponse identique. c'est a dire que je doit renvoyer ma réponse de telle façon que le destinataire reçoivent ça dans HTTP_RAW_POST_DATA...
Bon, moi je t'en dis ce que j'ai trouvé dans la doc, hein ! Jusqu'à ce matin j'ignorais jusqu'à l'existence de cette variable et de ce flux.
Cordialement, -- Olivier Miakinen
Mickaël Wolff
On 10/10/11 12:10, Olivier Miakinen wrote:
Bon, moi je t'en dis ce que j'ai trouvé dans la doc, hein ! Jusqu'à ce matin j'ignorais jusqu'à l'existence de cette variable et de ce flux.
Moi aussi j'ai découvert ça cette semaine :D
Le plus simple pour faire des tests, c'est encore d'employer cURL en ligne de commande.
Et dans dumper-post-in-http-body.php: == 8< = <?php var_dump(file_get_contents('php://input')); == 8< = Comme ça, on peut avancer et prouver au couillon qui attend les données que c'est lui le manchot ;)
On 10/10/11 12:10, Olivier Miakinen wrote:
Bon, moi je t'en dis ce que j'ai trouvé dans la doc, hein ! Jusqu'à
ce matin j'ignorais jusqu'à l'existence de cette variable et de ce
flux.
Moi aussi j'ai découvert ça cette semaine :D
Le plus simple pour faire des tests, c'est encore d'employer cURL en
ligne de commande.
curl http://testhost/dumper-post-in-http-body.php -X POST -d 'toto
est dans la place'
Et dans dumper-post-in-http-body.php:
== 8< = <?php
var_dump(file_get_contents('php://input'));
== 8< =
Comme ça, on peut avancer et prouver au couillon qui attend les
données que c'est lui le manchot ;)
Et dans dumper-post-in-http-body.php: == 8< = <?php var_dump(file_get_contents('php://input')); == 8< = Comme ça, on peut avancer et prouver au couillon qui attend les données que c'est lui le manchot ;)
Etienne
Le 10/10/2011 22:41, Mickaël Wolff a écrit :
Ben en fait ca semble finalement assez simple. il suffit remplacer dans le code source que j'ai filé au départ
fputs($fp, $data);
par
fputs($fp, $raw);
donc en gros ça revient a envoyer une variable post sans nom de variable.
Je suis pas sur a 100% que c'est bon, mais ca semble fonctionner. je vais approfondir la question.
Etienne
Le 10/10/2011 22:41, Mickaël Wolff a écrit :
Ben en fait ca semble finalement assez simple.
il suffit remplacer dans le code source que j'ai filé au départ
fputs($fp, $data);
par
fputs($fp, $raw);
donc en gros ça revient a envoyer une variable post sans nom de variable.
Je suis pas sur a 100% que c'est bon, mais ca semble fonctionner.
je vais approfondir la question.