Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/06/2008, 14h27   #1
Membre du Club
 
Inscription : mars 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 82
Points : 45
Points : 45
Par défaut Récupérer une page Web distante via Post

Salut à tous,

Le titre parle de lieu même, je voudrais récupérer le contenu d'une page web en utilisant la méthode post. Pour se faire, j'ai commencé à chercher sur Google et j'ai trouvé une méthode qui me plait, car qui ne nécessite aucune installation.

Le code que j'ai récupéré, le voici :

Page : test.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
<?php
// Initialisation de la page vers laquelle on poste
$url = 'http://localhost/pages/index.php';
 
// Mis en forme des valeurs postees
$post = array(
	'essai' => 'données 1',
	'test' => 'données 2'
);
$postdata = http_build_query($post);
 
// Creation du tableau d option
$opts = array( 'http' =>
	 array (
		'method' => 'POST',
		'header' => 'Content-type: application/x-www-form-urlencoded',
		'content' => $postdata
	 )
);
 
// Creation du contexte
$context = stream_context_create($opts);
 
// Recuperation d une page en methode post
$http_page = file_get_contents($url,false,$context);
 
// Affichage du code recupere
echo "<pre>$http_page</pre>";
?>
Pages : index.php :
Code :
1
2
3
4
5
6
7
 
Ceci est un test !!
<?
	echo 
			'ESSAI : '.$_POST['essai'].
			' - TEST : '.$_POST['test'];
?>
Je m'attend donc à avoir le résultat suivant sur la page test.php :

Citation:
Ceci est un test !!
ESSAI : données 1 - TEST : données 2
Sauf que j'obtiens ceci :

Citation:
Ceci est un test !!
ESSAI : données 1 - TEST :
Quelqu'un a-t-il une idée ? ou une autre méthode ?

Merci
Mike Reason est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2008, 09h22   #2
Membre du Club
 
Inscription : mars 2006
Messages : 82
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 82
Points : 45
Points : 45
Bon après avoir chercher un peu et avec l'aide d'un autre forum... J'ai trouvé pourquoi.

J'ai remplacé le code dans index.php et j'ai mis :

Code :
1
2
3
4
5
 
Ceci est un test !!
<?
	print_r($_POST);
?>
Et la j'obtient :

Citation:
Ceci est un test !!
Array
(
[test] => test
[amp ;essai] => essai
)
Me suis donc demandé d'où venait le amp;. J'ai réfléchi un peu et je me suis rappelé que & s'écrit &amp; en HTML. Donc, il y a une fonction qui met &amp; au lieu de &.
Cette fonction est

Code :
1
2
 
$postdata = http_build_query($post);
J'ai donc remplacé cette ligne par :

Code :
1
2
3
4
5
 
$postdata = ’’ ;
foreach( $post as $name => $value ) {
$postdata .= $name . ’=’ . $value . "&" ;
}
Et ainsi, j'obtient le bon résultat :

Citation:
Ceci est un test !!
ESSAI : données 1 - TEST : données 2
De toute manière ça n'avait pas l'air d'intéresser grands monde ici. Mais je poste quand même la solution. On sait jamais, ça pourra toujours servir à quelqu'un
Mike Reason est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h42.


 
 
 
 
Partenaires

Hébergement Web