XML et PHP

cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009 - 4 juil. 2003 à 15:22
cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004 - 8 juil. 2003 à 16:17
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

7 réponses

cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
5 juil. 2003 à 23:25
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
0
cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
5 juil. 2003 à 23:28
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
0
cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
7 juil. 2003 à 15:16
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
0
cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
8 juil. 2003 à 01:25
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
8 juil. 2003 à 11:23
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
0
cs_tom Messages postés 1511 Date d'inscription samedi 8 décembre 2001 Statut Modérateur Dernière intervention 11 juin 2009
8 juil. 2003 à 11:27
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
> > > > >
> > > >
> > >
> >
>
0
cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
8 juil. 2003 à 16:17
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
0
Rejoignez-nous