erreur dans formulaire CURL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : erreur dans formulaire CURL

Re: erreur dans formulaire CURL

par stealth35 » 19 avr. 2010, 23:00

:wink:
apres si tu veux récupérer les données utiliseDomDocument

Re: erreur dans formulaire CURL

par epimagique » 19 avr. 2010, 22:56

Toi, je t'aime !!

Merci, c'était ça !!

Re: erreur dans formulaire CURL

par stealth35 » 19 avr. 2010, 22:49

la on a une erreur apache pas PHP

EDIT : il attend peu etre un User-Agent...
RE-EDIT : manque un user-agent :wink:
curl_setopt($curl, CURLOPT_USERAGENT, 'PHP');

Re: erreur dans formulaire CURL

par epimagique » 19 avr. 2010, 22:48

Voici le résultat :
http://www.eskapad.com/double/post_LFQO%20CURL.php

le script est le suivant :
$post_data = array(
	'bResultat' => 'true',
	'bImpression' => '',
    'ModeAffichage' => 'COMPLET',
    'AERO_Date_DATE' => date("Y/m/d"),
    'AERO_Date_HEURE' => date("H:m"),
    'AERO_Langue' => 'FR',
    'AERO_Duree' => '96',
    'AERO_CM_REGLE' => '3',
    'AERO_CM_GPS' => '2',
    'AERO_CM_INFO_COMP' => '1',
    'AERO_Tab_Aero'	=> array(0 => 'LFQO')
);

$post_data=http_build_query($post_data);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION,1);
$page = curl_exec($curl);
curl_close($curl);
echo $page;

Re: erreur dans formulaire CURL

par epimagique » 19 avr. 2010, 22:42

Il ne faut pas inclure un bouton submit dans les données envoyées para hasard ???

Re: erreur dans formulaire CURL

par stealth35 » 19 avr. 2010, 22:40

C'est fait, mais toujours sans le retour attendu du serveur.
ta regardé les erreurs CURL ?
essaye de rajouter un CURLOPT_FOLLOWLOCATION

Re: erreur dans formulaire CURL

par epimagique » 19 avr. 2010, 22:37

C'est fait, mais toujours sans le retour attendu du serveur.

Re: erreur dans formulaire CURL

par stealth35 » 19 avr. 2010, 22:34

Bonjour,

En fait je ne peux pas modifier ce qu'attend le serveur... donc un tableau multi-dimensionnel.

Y'a un truc, mais quoi... ?
tu modifies rien avec 'http_build_query', le tableau multidimensionnel est dedans quand même

Re: erreur dans formulaire CURL

par epimagique » 19 avr. 2010, 22:30

Bonjour,

En fait je ne peux pas modifier ce qu'attend le serveur... donc un tableau multi-dimensionnel.

Y'a un truc, mais quoi... ?

Re: erreur dans formulaire CURL

par enneite » 13 avr. 2010, 18:52

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
ça en tous cas ça ne va pas car ton post_data c'est un tableau alors que cela devrait être une chaine de caractères de la forme:

"var1=a&var2=b&var3=c";

tu peux utiliser la fonction http_build_query($tableau) pour transformer un tableau en requete HTTP, mais fais bien attention, il vaut mieux utiliser un tableau unidimensionnel pour cela (ce qui n'est pas le cas de ton $post_data me semble-t-il)

Du coup, retravailles ton $post_data pour qu'il soit unidimensionnel, puis transforme le en requete HTTP grace à http_build_query();
$post=http_build_query($post_data_unidimensionnel);
C'est cette variable que tu passera en paramètre CUROPT_POSTFIELDS

curl_setopt($curl, CURLOPT_POSTFIELDS, $post);

Re: erreur dans formulaire CURL

par epimagique » 13 avr. 2010, 15:52

Je l'ai enlevé, mais sans plus de résultat...

Pour être précis, je reçois bien la page du serveur distant, mais c'est une page d'erreur.
Je me dis que mon formulaire Curl doit être différent (en-tête, données POST ?) du formulaire html puisque sinon le serveur me renverrait la bonne page...

Re: erreur dans formulaire CURL

par Nours312 » 13 avr. 2010, 15:45

je peux me tromper, mais j'ai pas le souvenir d'avoir utilisé :

curl_setopt($curl, CURLOPT_HTTPHEADERS,array('Content-Type: multipart/form-data'));

pour envoyer des données en POST via cUrl !... testes en virant cette ligne ;)

erreur dans formulaire CURL

par epimagique » 13 avr. 2010, 15:12

Bonjour,

Je tente de récupérer une page qui s'affiche normalement en validant un formulaire sur un site distant.
J'ai créé un formulaire en local qui fonctionne (quand je le valide, je récupère bien le résultat)
J'essaie de faire que ce formulaire soit envoyé par CURL pour en récupérer la page en retour dans une variable. Malheureusement, je n'arrive pas à le faire fonctionner.

Voici mon code, si qq1 trouve la différence entre les deux et peut m'expliquer mon erreur... ?
<FORM method='POST' action="http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php">
<INPUT type='hidden' name='bResultat' value='true'>
		<INPUT type='hidden' name='bImpression' value=''>
		<INPUT type='hidden' name='ModeAffichage' value='COMPLET'>
		<INPUT type='text' name='AERO_Date_DATE' id='AERO_Date' value='2010/04/13'>
		<INPUT class='DesciptionCritere' name='AERO_Date_HEURE' value='15:00'>
		<INPUT type='hidden' name='AERO_Langue' value='FR'>
		<INPUT name='AERO_Duree' value='96'>
		<br />
		VFR/IFR<INPUT name='AERO_CM_REGLE' type='radio' value='1' ><br />
		IFR<INPUT name='AERO_CM_REGLE' type='radio' value='2' ><br />
		VFR<INPUT name='AERO_CM_REGLE' type='radio' value='3' checked><br />
		<br />
		<INPUT name='AERO_CM_GPS' type='radio' value='1' ><br />
		<INPUT name='AERO_CM_GPS' type='radio' value='2' checked ><br />
		<br />
		<INPUT name='AERO_CM_INFO_COMP' type='radio' value='1' checked ><br />
		<INPUT name='AERO_CM_INFO_COMP' type='radio' value='2' ><br />
		<br />
		<INPUT type='text' name='AERO_Tab_Aero[0]' size='7' maxlength='4' value='LFQO' ><br />
		<INPUT type='submit' value='Complet'>
		</FORM>
$post_data = array(
	'bResultat' => 'true',
	'bImpression' => '',
    'ModeAffichage' => 'COMPLET',
    'AERO_Date_DATE' => '2010/04/13',
    'AERO_Date_HEURE' => '15:00',
    'AERO_Langue' => 'FR',
    'AERO_Duree' => '96',
    'AERO_CM_REGLE' => '3',
    'AERO_CM_GPS' => '2',
    'AERO_CM_INFO_COMP' => '1',
    'AERO_Tab_Aero' => array(0 => 'LFQO')
);

print_r($post_data);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php");
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADERS,array('Content-Type: multipart/form-data'));
$page = curl_exec($curl);
curl_close($curl);
echo $page;
Merci pour votre aide !

Epi