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 :

Envoyer en post à une page distante


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Avatar
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 136
    Points : 150
    Points
    150
    Par défaut Envoyer en post à une page distante
    Bonjour, voilà mon problème.


    Si vous allez voir cette page là http://www.computing.dcu.ie/~humphry...l.tyrrell.html, vous verrez que je peux y envoyer des informations via un formulaire (ne marche que sous ie).
    Je voudrais savoir comment "remplir" un de ces formulaires à partir d'une page située sur mon site web, automatiquement, sans avoir à cliquer sur un quelconque bouton.

    Comment faire ensuite pour récupérer la page que le formulaire affiche??


    Merci :-)


    PS : non, je ne demande pas qu'on me fasse mon projet ;-) je voudrais seulement avoir le nom des fonctions à utiliser, je me débrouillerai ensuite :-)

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Si on regarde le code source de cette page de formulaires, on peut voir l'action (la ou il renvoit), et le nom des champs.

    Ainsi, tu pourrai le faire toit même sur ton site en créant un même formulaire. Enfin je crois.

  3. #3
    Membre habitué Avatar de Avatar
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 136
    Points : 150
    Points
    150
    Par défaut
    Oui, en effet, j'ai vu dans les sources de la page sur quel site envoyer la requête.
    Mais ici, je me sers de PHP comme un language de programmation uniquement, c'est à dire qu'il n'y a aucun affichage, je ne remplis pas moi-même de formulaire, c'est mon programme qui envoie tout seul les requêtes à l'autre site en fonctions de différents paramètres ; je ne peux donc pas créer de formulaire.

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Je te conseille d'aller voir du côté de cURL, une extension qui permet de faire facilement toutes sortes de requetes HTTP(S).
    La documentation de PHP ne fournie pas beaucoup d'exemples de code mais je pense que tu peux trouver des bons tutos en cherchant un peu ^^

    Attention quand même, vérifie avant que ton hébergeur propose bien cette extension
    Il suffit de chercher dans le phpinfo(), tu devrais avoir quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CURL support 		 enabled
    CURL Information 	libcurl/7.11.2 OpenSSL/0.9.7e ipv6 zlib/1.2.2
    Si cette extension n'existe pas chez ton hébergeur, il te reste à utiliser les sockets (fsockopen / extension socket) pour envoyer toi même la requete HTTP. C'est certes plus artisanal mais ça a fait ses preuves
    Ou peut-être avec stream_context_create() (j'ai jamais eu l'occasion de tester cette méthode mais ça me parait fesable).


    Si tu as besoin d'exemples n'hésite pas à me demander
    Bonne chance
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  5. #5
    Membre habitué Avatar de Avatar
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 136
    Points : 150
    Points
    150
    Par défaut
    Merci!

    Vais aller voir tout ça. Je bosse en local et le porgramme n'est pas destinné à être mis en ligne donc il n'y aura pas de problème à utiliser CURL.

  6. #6
    Membre habitué Avatar de Avatar
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 136
    Points : 150
    Points
    150
    Par défaut
    Re bonjour!

    Voilà le problème.
    Sur cette page http://www.computing.dcu.ie/~humphry...l.student.html, dans le premier formulaire, si on clique sur ok en laissant <getdescription> dans la textarea, une jolie page xml avec pleins de choses interressantes s'affiche.

    Moi, je veux afficher cette page sans cliquer sur ok :-) histoire d'automatiser ça et de pouvoir le faire en boucle.

    J'ai donc regardé dans le code source de la page et j'ai vu que le contenu de la textarea "q" était envoyé en post à http://w2m.comp.dit.ie/services/tyrrell.

    Avec les conseils des posts précédents, j'ai donc essayé plusieurs méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      $opts = array (
      'http'=>array (
       'method' => 'POST',
       'q' => "<getdescription>"    
       )
      );
     
    $context = stream_context_create($opts);
     
     
    $fp = fopen('http://w2m.comp.dit.ie/services/tyrrell', 'r', false, $context);
    fpassthru($fp);
    fclose($fp);


    puis celle-ci :

    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
    31
     
        $requete = "q=" . urlencode("<getdescription");
          // initialisation des infos
          $hote = "w2m.comp.dit.ie";
          $script = "/services/tyrrell";
          $longueur_requete = strlen($requete);
          $methode = "POST"; // POST pour l'envoi de plusieurs messages
          // initialition de l'entete
          $entete = $methode . " " . $script . " HTTP/1.1\r\n";
          $entete .= "Host: " . $hote . "\r\n";
          $entete .= "Content-Type: application/x-www-form-urlencoded\r\n";
          $entete .= "Content-Length: " . $longueur_requete . "\r\n";
          $entete .= "Connection: close\r\n\r\n";
          $entete .= $requete . "\r\n";
          // ouverture de la connexion
          $socket = fsockopen($hote, 80, $errno, $errstr);
          if($socket) // si connexion ok
          {
    	fputs($socket, $entete); // envoi de l'entete
    	while(!feof($socket))
    	  {
    	    $reponse[] = fgets($socket); // recupere les resultats
    	  }
    	fclose($socket);
          }
          else
          {
    	$reponse = false;
          }
          // affichage de la réponse
          print_r($reponse);

    Aucune ne marche!!!! je me retrouve à chaque fois avec une erreur timeout de 30s dépassé et je ne pense pas qu'augmenter la valeur du timeout règle le problème :-)


    Des idées? Merci :-)

  7. #7
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Voici un bout de script que j'ai utilisé pour un test, il post des données sur une page d'un site web et affiche le résultat:

    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
    $fp = fsockopen("www.siteinternet.com", 80, $errno, $errstr, 30);
     
    $poststring = "variable1=exemple_de_donnee";
     
    $out = "POST /chemin_du_fichier/fichier.php HTTP/1.0\r\n";
    $out .= "Host: www.siteinternet.com\r\n";
    $out .= "Cookie: PHPSESSID=fe52a9a9ca928adf09f648f1715ebf31; \r\n"; //Si on veux envoyer des cookies
    $out .= "Content-length: ".strlen($poststring)."\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $out .= "Connection: Close\r\n\r\n";
    $out .= $poststring."\r\n\r\n";
     
    fwrite($fp, $out);
    while (!feof($fp)) {
           echo fgets($fp, 128);
    }

  8. #8
    Membre habitué Avatar de Avatar
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juillet 2005
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 136
    Points : 150
    Points
    150
    Par défaut
    ça marche nickel, merci :-)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Et le code à la methode GET, sa donne quoi ? Toujours avec le socket !

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

Discussions similaires

  1. Envoyer des paramètres à une page PHP en POST
    Par Skima dans le forum Services Web
    Réponses: 1
    Dernier message: 01/10/2013, 13h37
  2. Soumettre une variable POST à une page distante
    Par CaviarNAS dans le forum jQuery
    Réponses: 2
    Dernier message: 05/09/2012, 18h47
  3. Envoyer des données POST à une page web puis récupérer l'URL
    Par Ze moi dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/04/2007, 17h18
  4. Envoyer des données POST à une page !
    Par wishmastah dans le forum Langage
    Réponses: 11
    Dernier message: 11/04/2006, 19h37
  5. Réponses: 18
    Dernier message: 03/03/2006, 18h19

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