Discussion:
recuperation de la chaine POST
(trop ancien pour répondre)
Gilles RONSIN
2007-04-20 10:17:43 UTC
Permalink
Salut

Je travaille sur la récupération de paramètres envoyés par un
appareil. Il poste régulièrement ses paramètres en HTTP sur un
serveur apache.

Si dans le body on envoie les paramètres sous la forme :

param1=valeur1&param2=valeur2

Il est facile de récupérer $_POST['param1'] et $_POST['param2']

Mais comment récupérer la chaine complète non interprétée ?

je cherche à obtenir $params = "param1=valeur1&param2=valeur2"

Sur une méthode GET on peut récupérer dans $_SERVER['URI']
mais avec une méthode POST ???

Merci
--
Site : http://gilles.ronsin.free.fr
Recherches ciblées http://gilles.ronsin.free.fr/#search
Il est impossible pour un optimiste d'être agréablement surpris.
Olivier Miakinen
2007-04-20 10:50:00 UTC
Permalink
Bonjour,
Post by Gilles RONSIN
Je travaille sur la récupération de paramètres envoyés par un
appareil. Il poste régulièrement ses paramètres en HTTP sur un
serveur apache.
param1=valeur1&param2=valeur2
Il est facile de récupérer $_POST['param1'] et $_POST['param2']
Ah non ! Même si c'est une requête de type POST, les envois de la forme
param1=valeur1&param2=valeur2 (donc dans l'URL) seront récupérés dans
$_GET. Les paramètre réellement passés en POST le sont autrement (il
faudrait lire la norme HTTP pour plus de détails, mais c'est hors-sujet
dans ce groupe).
Post by Gilles RONSIN
Mais comment récupérer la chaine complète non interprétée ?
je cherche à obtenir $params = "param1=valeur1&param2=valeur2"
Ah ? Et comment feras-tu si dans les paramètres il y a un fichier
binaire, par exemple une image ? Ou tout simplement si dans le fichier
il y a des « & » et des « = » ?
Post by Gilles RONSIN
Sur une méthode GET on peut récupérer dans $_SERVER['URI']
mais avec une méthode POST ???
$_POST ou $_REQUEST
Gilles RONSIN
2007-04-20 12:10:21 UTC
Permalink
Olivier Miakinen <om+***@miakinen.net>, le ven. 20 avr. 2007
12:50:00, écrivait ceci:

Salut Olivier,
Post by Olivier Miakinen
Ah non ! Même si c'est une requête de type POST, les envois de la
forme param1=valeur1&param2=valeur2 (donc dans l'URL) seront
récupérés dans $_GET. Les paramètre réellement passés en POST le
sont autrement (il faudrait lire la norme HTTP pour plus de
détails, mais c'est hors-sujet dans ce groupe).
Le flux que nous recevons est de la forme

POST /url.php HTTP/1.0
User-Agent: xxxx
Content-Type: application/x-www-form-urlencoded
Content-Length: xx

param1=valeur1&param2=valeur2

donc les $_GET sont vides
Post by Olivier Miakinen
Post by Gilles RONSIN
Mais comment récupérer la chaine complète non interprétée ?
je cherche à obtenir $params = "param1=valeur1&param2=valeur2"
Ah ? Et comment feras-tu si dans les paramètres il y a un fichier
binaire, par exemple une image ? Ou tout simplement si dans le
fichier il y a des « & » et des « = » ?
Il n'y aura pas dans cette application.


En fait j'ai fini par trouver :

la chaine brute est disponible dans
$HTTP_RAW_POST_DATA ou $GLOBALS['HTTP_RAW_POST_DATA']

en ayant pris soin de paramétrer le serveur en activant
always_populate_raw_post_data = On

Merci d'avoir répondu ;-)
--
Site : http://gilles.ronsin.free.fr
Recherches ciblées http://gilles.ronsin.free.fr/#search
Il est impossible pour un optimiste d'être agréablement surpris.
Olivier Miakinen
2007-04-20 14:21:43 UTC
Permalink
Bonjour Gilles,
Post by Gilles RONSIN
la chaine brute est disponible dans
$HTTP_RAW_POST_DATA ou $GLOBALS['HTTP_RAW_POST_DATA']
en ayant pris soin de paramétrer le serveur en activant
always_populate_raw_post_data = On
Merci d'avoir répondu ;-)
Eh bien toutes mes excuses pour ma réponse à côté de la plaque, et
merci d'avoir donné la bonne réponse. Il va falloir vraiment que je me
renseigne sur le fonctionnement interne du protocole HTTP pour éviter
de dire d'autres bêtises à l'avenir.
Patrick Mevzek
2007-04-20 14:21:43 UTC
Permalink
Post by Gilles RONSIN
Je travaille sur la récupération de paramètres envoyés par un
appareil. Il poste régulièrement ses paramètres en HTTP sur un
serveur apache.
param1=valeur1&param2=valeur2
Attention, ce n'est pas le seul codage possible au niveau de la partie
document lors d'un POST.
Si vous ne contrôlez pas la page HTML où se situe le formulaire qui
déclenche cet envoi, vous risquez d'avoir des surprises.
--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Gilles RONSIN
2007-04-20 15:57:01 UTC
Permalink
Patrick Mevzek <pm-***@nospam.dotandco.com>, le ven. 20 avr.
2007 16:21:43, écrivait ceci:

Salut Patrick,
Post by Patrick Mevzek
Attention, ce n'est pas le seul codage possible au niveau de la
partie document lors d'un POST.
Si vous ne contrôlez pas la page HTML où se situe le formulaire
qui déclenche cet envoi, vous risquez d'avoir des surprises.
Merci pour cet avertissement ;-)

C'est une chaine complète. On controle l'émetteur (les appareils) et le
récepteur (le serveur).
Par contre il est difficile de voir les bugs de mise en forme des
paramètres d'un coté comme de l'autre.
Maintenant je peux valider qu'un défaut vient d'un problème de
transmission ou d'analyse.
--
Site : http://gilles.ronsin.free.fr
Recherches ciblées http://gilles.ronsin.free.fr/#search
Il est impossible pour un optimiste d'être agréablement surpris.
Continuer la lecture sur narkive:
Loading...