J'y suis finalement arrivé ! La solution était bien $HTTP_RAW_POST_DATA mais il fallait ajouter une ligne dans le php.ini si l'option n'était pas activée.
Dans "Language Options", il faut qu'il y ait ceci :
| always_populate_raw_post_data = 1 |
On ne peut pas le faire avec ini_set() car les données sont déjà postées au moment où les modifications prennent lieu...
Je récupère les données XML avec le script suivant :
<?php
// Headers header("Content-Type: text/xml"); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT'); header('Cache-Control: no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache');
// XML output print rawurldecode($HTTP_RAW_POST_DATA);
?>
|
Ceci marche sous PHP 4.2 (EasyPHP 1.6) mais je ne garantis pas que ce soit encore valable avec la 4.3.
Et puis il faut avoir accès au php.ini, ce qui exclut l'utilisation d'hébergements gratuits comme free.fr.
Je pense que je vais ajouter une source sur le site à ce sujet car c'est un problème qui ne semble pas être très documenté pour le moment...
Dean
-------------------------------
Réponse au message :
-------------------------------
> Ah oui! petite precision: je fais ca avec un sendAndLoad...
>
>
> > Ben c'est la solution que j'ai adopté pour l'instant, mais je vais faire des tests avec ce $HTTP_RAW_POST_DATA, voir ce que ca donne.
> >
> > En tout cas merci pour ces indices, je n'avais rien trouvé ailleurs.
> >
> > @+ Tom
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Après avoir effectué quelques tests, j'en ai déduit que le problème venait de PHP.
> > > En fait les données sont bien postées, mais en "raw data" (avec la méthode send() de l'objet XML). Il est donc impossible de récuperer le fichier par le biais des simples variables POST.
> > > J'ai cherché un peu sur le web, et apparemment il y a une variable $HTTP_RAW_POST_DATA (remplacée par $_SERVER['HTTP_RAW_POST_DATA'] dans PHP 4.1) qui contient les données mais je n'ai pas pu tester.
> > > Dans PHP 4.3, il y aurait aussi moyen d'utiliser un flux possédant l'URI php://input si je me rappelle bien, mais là aussi je n'ai pas essayé.
> > > Encore faut-il bien configurer PHP...
> > >
> > > Pour l'instant la seule solution "qui marche" chez moi est la requête GET encodée en URL, mais ce n'est pas très très propre.
> > >
> > > Enfin ce qui compte est que vous ayez trouvé une solution :-)
> > >
> > > Dean
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > oui, oui, merci Dean, mais c'est avec flash que j'essaie de faire passer les variables... C'est bien la méthode que j'avais appliqué, mais je ne sais pas pourquoi, le PHP ne reçoit rien...
> > > > Mais j'ai trouvé un contournement, en faisant passer les variables dans l'appel de 'URL, justement ;).
> > > >
> > > > Merci quand meme,
> > > > Tom
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Petite erreur de ma part en ce qui concerne l'appel de la page, j'avais oublié que les requêtes POST (ni même les GET) n'étaient pas passées par URL.
> > > > > Enfin je pense que vous m'avez compris.
> > > > >
> > > > > Dean
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Bonjour,
> > > > > >
> > > > > > Oui cette variable a été remplacée par $_POST[].
> > > > > >
> > > > > > Vous pouvez faire par exemple $data = $_POST['xml'] si la page a été appelée comme ceci :
> > > > > >
> > > > > > http://www.server.com/page.php?xml=...
> > > > > >
> > > > > > Dean
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Bonjour tout le monde!
> > > > > > >
> > > > > > > Est ce que quelqu'un sait comment récupérer des données XML dans une page PHP? $HTTP_POST_VARS ne marche pas...
> > > > > > >
> > > > > > > Merci pour votre aide!
> > > > > > >
> > > > > > > @+ Tom
> > > > > >
> > > > >
> > > >
> > >
> >
>