par
jeum » 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;
?>
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]<?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;
?>[/php]