IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupérer une page Web distante via Post


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 64
    Points
    64
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :

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

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

    Merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 84
    Points : 64
    Points
    64
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Ceci est un test !!
    <?
    	print_r($_POST);
    ?>
    Et la j'obtient :

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $postdata = http_build_query($post);
    J'ai donc remplacé cette ligne par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $postdata = ’’ ;
    foreach( $post as $name => $value ) {
    $postdata .= $name . ’=’ . $value . "&" ;
    }
    Et ainsi, j'obtient le bon résultat :

    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/03/2008, 11h04
  2. Réponses: 2
    Dernier message: 29/02/2008, 16h20
  3. [Réseau] Date de modification d'une page web distante
    Par laurent_h dans le forum Langage
    Réponses: 2
    Dernier message: 26/07/2007, 02h36
  4. [C++][Linux & Windows] Récupérer une page web
    Par Invité4 dans le forum C++
    Réponses: 4
    Dernier message: 06/04/2006, 19h21
  5. [VBNET] Rafraichir une page WEB distante (par IE)
    Par onipif dans le forum VB.NET
    Réponses: 7
    Dernier message: 22/11/2005, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo