cURL : Requête POST sur des formulaires évolués

Petit nouveau ! | 2 Messages

19 janv. 2013, 23:43

Bonsoir

Je bute sur un problème avec les requêtes POST et je me demande si ce que je veux faire est réalisable ou pas, et si c'est la bonne méthode ..

Le but est de récupérer et traiter des résultats de recherches.
J'arrive à faire fonctionner ces requêtes sur des sites de recherches classiques mais pas avec ceux comportant des formulaires à auto-completion (tests en dessous). Dans ce cas j'ai beau envoyer des chaines conformes, je récupère une chaine de longueur nulle.

Y a t-il une erreur quelque part, est-ce que c'est juste une question d'option CURL.. ou est ce qu'il faut de toutes façons une validation manuelle avec ce type de formulaire ??
Et comment déclencher l'auto-completion du contrôle si on envoie une chaine de recherche non-conforme ?

Merci pour vos réponses.
<?php
	// Une recherche sur duckduck (OK!)
	// $url='https://duckduckgo.com/';
	// $postFields=array(
        // "q" => "auto-completion"
	// );
	
	// Une recherche qui marche pas ..
	$url= 'http://www.123envoiture.com/recherche.php';
	$postFields=array(
          "VilleDepart" => "Lyon (69001)", //2996944_69001
	  "VilleArrivee" => "Paris (75000)", //2988507_75000
	  "dateDepart" => "31/01/2013" //31%2F01%2F2013
	);
	
	// Mode POST
	$options=array(
		CURLOPT_URL            => $url,       // Url cible (l'url de la page que vous voulez télécharger)
		CURLOPT_RETURNTRANSFER => true,       // Retourner le contenu téléchargé dans une chaine (au lieu de l'afficher directement)
		CURLOPT_HEADER         => false,      // Ne pas inclure l'entête de réponse du serveur dans la chaine retournée
		CURLOPT_FAILONERROR    => true,       // Gestion des codes d'erreur HTTP supérieurs ou égaux à 400
		CURLOPT_POST           => true,       // Effectuer une requête de type POST
		CURLOPT_SSL_VERIFYPEER => false,
		CURLOPT_POSTFIELDS     => $postFields // Le tableau associatif contenant les variables envoyées par POST au serveur
	);
	
    // Requête
    $CURL=curl_init();
    curl_setopt_array($CURL,$options);
    $content=curl_exec($CURL);
 
    // Gestion erreur
    if(curl_errno($CURL)){
        // Le message d'erreur correspondant est affiché
        echo "ERREUR curl_exec : ".curl_error($CURL);
    }
    curl_close($CURL);

    echo strlen($content);
    echo $content;
?>

Avatar du membre
Mammouth du PHP | 1564 Messages

20 janv. 2013, 07:19

Salut,

pour l'auto-completion, je t'invite à voir du côté de jquery: jqueryui.com/autocomplete/

pour récupérer les valeur de ton tableau, il y cette solution:
<?php
        $postFields=array(
          "VilleDepart" => "Lyon (69001)", //2996944_69001
          "VilleArrivee" => "Paris (75000)", //2988507_75000
          "dateDepart" => "31/01/2013" //31%2F01%2F2013
        );
		foreach($postFields as $cle => $valeur) {
			?>
			<input type="text" name="<?php echo $cle; ?>" value="<?php echo $valeur; ?>" /><br />
			<?php
		}
je ne connais pas CURL, dsl

Petit nouveau ! | 2 Messages

20 janv. 2013, 12:02

Merci mais je ne cherche pas à faire un formulaire .. La requête POST permet d'envoyer des paramètres à un serveur et de télécharger le résultat.

Eléphant du PHP | 418 Messages

20 janv. 2013, 12:39

Salut

ça peux peut être t'aider

Un sujet que 'jai poster pour Curl

En espérant que tu trouve la solution à ton problème

Cordialement

Avatar du membre
Mammouth du PHP | 1564 Messages

20 janv. 2013, 12:41

un tuto est disponible à cette adresse: http://plkt.fr/index.php/hacks/77-prati ... -curl.html pour les POST et GET