Php et Curl, help!!!

Fermé
123pierre - 27 janv. 2009 à 12:15
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 2 déc. 2009 à 18:02
Hello Hello,

Je voudrais poster envoyer un POST auromatiquement en utilsant PHP/ Curl.
Le probleme est que dans le formulaire se trouve une cle cachee (variable hidden) qui est automatiquement generee et donc change a chaque fois.

Je peux facilement recupere la cle mais le probleme c'est que je ne sais pas comment reutiliser le meme formulaire sans recharger la page, et donc la cle change.

Mon code:

Ici je recupere la page:
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_URL, $url_connexion);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_COOKIESESSION, 0); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $url_cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $url_cookie);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 
 
$contenu = curl_exec($ch);


ensuite je bidouille pour recupere la cle sur $contenu avec une expression reguliere ou meme un explode. Je cale tous mes variable de champs dans postfield.

et je veux poster enfin le formulaire.. (Mais bien sur, HIC, ca recherge un nouveau formulaire et la cle change):

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_COOKIESESSION, 0); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $url_cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $url_cookie);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch,CURLOPT_PUT,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields_log);
$contenu = curl_exec($ch);


Merci pour votre aide. D'habitude je recherche toujours ma reponse sur le forum ou le net, mais la.. le sujet a apparement ete rarement traite..

A+,

Pierre
A voir également:

5 réponses

Hello,

Je n'ai recu aucune reponse a cette question.. Quelqu'un a une idee?

Merci,

Pierre.
0
Bonjour

ca recherge un nouveau formulaire et la cle change C'est bien comme ça que ça marche quand on remplit le formulaire à la main, il n'y a donc aucune raison que ça ne marche pas en PHP.
Mais il ne te manquerait pas une CURLOPT_POST ? Si j'en crois la doc, il faut la mettre à true pour faire un POST. sinon tu fais un GET
0
Hello Toto,

Merci de t'interresser a mon probleme.

J'ai mis ($ch,CURLOPT_PUT,1) au lieu de POST. C'est un site qui utilise PUt et non POST.

Par contre je ne suis pas d'accord avec toi quand tu dis qu'avec un explorateur basic ca recharge aussi la page.. Non. Pourquoi ca rechargerais la page?
Mais je suis d'accord avec toi quand tu dis que ca dois etre possible avec CURL. Je veux juste qu'il eveite de recharger un nouveau formulaire...


Mon probleme c'est que je charge le formulaire avec CURL. Il y a un code cache dans un des champs.
Du style:

<input type="hidden" name="CLE" value="xrstsuso">

Je charge la page avec CURL. Je trouve cette cle cachee avec une expression reguliere.
Mais avant de poster tout ca, CURL va recharger la page, et donc me fausser la cle..

Ce que je veux c'est que CURL ne recharge pas la page..

MERCI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
ton problème vient surement qu'il existe un variable de session dans un cookie. et quand tu fait ton POST, ces variable ne sont pas ré-envoyées.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
2 déc. 2009 à 18:02
Je ne vois pas où est le problème puisque c'est une clé générée, alors qu'elle le soit 2, 10 ou 20 fois, il n'y a aucun changement dans le code ...

cURL est côté serveur donc il faut forcément charger une page pour l'utiliser.
Tu peux utiliser AJAX pour charger la page, mais comme c'est du JS, il faut bien penser à ne pas l'utiliser dans un but de sécurité, et ton script doit fonctionner avec JS désactiver.

“Je trouve cette cle cachee avec une expression reguliere”
Ah bon !? Un $_POST['cle'] ne suffirait-il pas ?
0