Résultats de 1 à 3 sur 3

Sujet : fonction fsockopen avec méthode POST

  1. #1
    Visiteur MP
    Visiteur MP

    fonction fsockopen avec méthode POST

    Bonjour,
    Je souhaite utiliser la fonction fsockopen avec la méthode POST.
    J’ai regarder les exemples sur les différents site PHP que j’ai pu trouver mais je n’ai pas réussi a les adapter à mon besoin.

    Voici ce que je souhaite faire…

    //Dans un premier temps, je récupère une sessionID qui vas me servir pour la suite du traitement.
    Code:
    $UrlFIRST = fopen (\"http://www.travelstreet.com/transport/BookXpress_Hitchhiker/selectie.cfm?parameter=<Parameter%20LocalPath=/holidays/travelagents/airstop/bookxpress/%20Lang=F>\", \"r\");	
    if (!$UrlFIRST) 
    	{
       echo \"<p>Impossible de lire la page.\\n\";
       exit;
    	}
    
    $line=\"\";
    while (!feof ($UrlFIRST))	
        {
    	$line .= fgets ($UrlFIRST,1024);
    	$line=trim($line);
    	}
    fclose($UrlFIRST);
    
    $ID=\"200[0-9][0-9]{8,8}[A-Z0-9]{12}\";
    if (eregi ($ID, $line,$out))
    	{
    	$SessionID=$out[0];
    	}
    // puis voici le traitement que je souhaite faire….

    Ceci est une liste de chaîne que je récupère dans un formulaire….

    $Dep=\"par\";
    $DepDay=\"10\";
    $DepMonth=\"09\";
    $DepYear=\"2004\";
    $Ret=\"nce\";
    $RetDay=\"25\";
    $RetMonth=\"09\";
    $RetYear=\"2004\";
    $Adult=\"1\";
    $Children=\"0\";
    $Infant=\"0\";


    En suite, je souhaite me connecter à une url avec la fonction fsockopen, en méthode POST.

    L’Url en question s’etablie de la façon suivante :


    http://www.travelstreet.com/transport/BookXpress_Hitchhiker/tarieven.cfm?

    en suit une série de paramètre de type a=1&b=2…. etc, reprenant les chaînes renseignés ci-dessus : (Ces paramètres sont repris de l’url d’origine du site)

    Parameter=$SessionID
    nr_adults=$Adult
    maandjaar1=$DepMonth/$DepYear
    Maatschappijen=*
    des_apcode=
    dep2_apcode=
    dep_apcode=
    EcoBusFir=eco
    des2_apcode=
    x=10
    dep_apname=$Dep
    des2_apname=$Dep
    dep2_apname=$Ret
    nr_children=$Children
    des_apname=$Ret
    Muntgegevens=EUR,1
    y=16
    Roundtrip=1
    nr_infants=$Infant
    dag2=$RetDay
    dag1=$DepDay
    Normaal=1
    maandjaar2=$RetMonth/$RetYear

    l’url envoyé doit avoir la forme suivante ( pour exemple):

    Code:
    http://www.travelstreet.com/transport/BookXpress_Hitchhiker/tarieven.cfm?Parameter= 2004061610502352411DD7F1&nr_adults=1&maandjaar1=06/2004&Maatschappijen=*&des_apcode=&dep2_apcode=&dep_apcode=&EcoBusFir=eco&des2_apcode=&x=10&dep_apname=bru&des2_apname=bru&dep2_apname=nyc&nr_children=0&des_apname=nyc&Muntgegevens=EUR,1&y=16&Roundtrip=1&nr_infants=0&dag2=4&dag1=27&Normaal=1&maandjaar2=07/2004
    J’ai regardé au la plupart des tutoriaux présent sur la toile, et je n’ai pas su reproduire l’utilisation préconisé…
    Quelqu’un peux m’aider ?

    Merci

  2. #2
    Visiteur MP
    Visiteur MP
    Il manque un morceau dans mon code...

    aprés ://Dans un premier temps, je récupère une sessionID qui vas me servir pour la suite du traitement.
    Code:
    $UrlFIRST = fopen (\"http://www.travelstreet.com/transport/BookXpress_Hitchhiker/selectie.cfm?parameter=<Parameter%20LocalPath=/holidays/travelagents/airstop/bookxpress/%20Lang=F>\", \"r\");	
    if (!$UrlFIRST) 
    	{
       echo \"<p>Impossible de lire la page.\\n\";
       exit;
    	}
    
    $line=\"\";
    while (!feof ($UrlFIRST))	
        {
    	$line .= fgets ($UrlFIRST,1024);
    	$line=trim($line);
    	}
    fclose($UrlFIRST);
    
    $ID=\"200[0-9][0-9]{8,8}[A-Z0-9]{12}\";
    if (eregi ($ID, $line,$out))
    	{
    	$SessionID=$out[0];
    	}

  3. #3
    Visiteur MP
    Visiteur MP
    Salut,

    Je ne sais pas si j\'ai vraiment la solution à ton problème car malgré ton post qui est plutot bien écrit, je ne suis pas certain d\'avoir tout compris.

    Moi j\'utilserai une connection http avec un truc du style :
    Code:
    <?php
    function fichier_http($url){
    $proxyhost=\"XX.XXX.XXX.XX\";
    $proxyport=XXXX;
    $fsource = fsockopen($proxyhost, $proxyport,&$errno, &$errstr, 30);
    if(!$UrlFIRST) {
    	fclose($UrlFIRST); 
    	echo \"> $errstr <$errno><br/>\\n\";
    	return FALSE;
    	} 
    	else {
    	        fputs($UrlFIRST,\"POST $url HTTP/1.0\\n\\n\");
    	while (!feof($UrlFIRST)) {
         	      $result =$result.fread($UrlFIRST,1024);
       	}
    	fclose($UrlFIRST);
    // Ici ce que tu souhaites faire...
    }
    return FALSE;
    }

    Voilà sinon tu peux utiliser une socket :
    Code:
    <?php
    function httpPost($Host, $URI, $Referer, $Post)
        {
            $Body = \'\';
            foreach($Post as $key => $value)
                {
                    $Body.= urlencode($key).\'=\'.urlencode(\"\\r\\n\".stripslashes($value).\"\\r\\n\").\'&\';
                }
            $ContentLength = strlen($Body);
    
            // Generate the Request header
            $Request = \"POST $URI HTTP/1.1\\r\\n\";
            $Request.= \"Host: $Host\\r\\n\"; 
            $Request.= \"Accept-Language: en-us, en;q=0.50\\r\\n\";
            $Request.= \"Cache-Control: max-age=0\\r\\n\";
            $Request.= \"Content-Type: application/x-www-form-urlencoded\\r\\n\";
            $Request.= \"Content-Length: $ContentLength\\r\\n\\r\\n\";
            $Request.= \"$Body\\r\\n\"; 
    
            // Open the connection to the host
            $socket = fsockopen($Host, 80, &$errno, &$errstr);
            if (!$socket)
                {
                    $Result[\'errno\'] = $errno;
                    $Result[\'errstr\'] = $errstr;
                    return $Result;
                }
            else
                {
                    $idx = 0;
                    fputs($socket, $Request);
                    while (!feof($socket))
                        $Result[$idx++] = fgets($socket, 128);
                    fclose ($socket);
                    return $Result;
                }
        }
        
    ?>
    Voilà bon courage,
    ++

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!