Rechercher : dans
Par :

Php et Curl, help!!!

Dernière réponse le 29 jan 2009 à 12:16:16 123pierre, le 27 jan 2009 à 12:15:52 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Safari 525.19

Meilleures réponses pour « Php et Curl, help!!! » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...

1

123pierre, le 29 jan 2009 à 04:12:51

Hello,

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

Merci,

Pierre.

Répondre à 123pierre

2

toto, le 29 jan 2009 à 11:42:50

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

Répondre à toto

3

 123pierre, le 29 jan 2009 à 12:16:16

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!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Répondre à 123pierre