2010-06-20 15 views
1

J'essaie d'écrire un script qui remplit forme automatiquement, puis appuyez sur le bouton soumettre.remplir un formulaire automatiquement en utilisant curl et php

J'ai lu que vous pouvez utiliser Curl pour publier des requêtes http, mais comment faire si le formulaire gère la post-requête avec javascript, comme le code ci-dessous?

<form name="myform" action="javascript:void(0)" method="POST" onsubmit="return funcy_function(this)"> 
+0

Pourquoi voudriez-vous utiliser curl pour publier la requête http de PHP? Si vous voulez le publier sur une page différente - il suffit de changer l'action du formulaire html. –

+0

En outre, Curl est une fonction côté serveur. Peu importe à PHP si le formulaire a été soumis avec Javascript ou non. –

+0

Peut-être que je n'étais pas assez clair avec mon message. Je veux remplir le formulaire AUTOMATIQUEMENT en utilisant un script et Curl peut envoyer des post-requêtes par conséquent, il peut en quelque sorte remplir des formulaires pour moi, mais je ne sais pas comment spécifier l'URL cible. Je sais que si je change l'action à un document.php le message sera envoyé à document.php .. mais ce n'est pas le problème .. btw, merci de prendre votre temps et de me répondre! – Narancha

Répondre

2

Basé votre réponse aux commentaires ci-dessus, ce que vous voulez faire est pas « remplir le formulaire » avec boucle, mais poster le formulaire dûment rempli à la même page le formulaire normalement envoyer.

Cette opération est également appelée publication entre sites, et de nombreux développeurs la testent spécifiquement et ne lui permettent pas d'améliorer la sécurité. Ce sera aussi beaucoup plus difficile si le formulaire a un captcha.

En supposant qu'il a encore un sens à faire (je l'ai utilisé cette technique avant d'un formulaire d'inscription newsletter), voici ce que vous voulez faire:

Pour obtenir l'URL d'action du formulaire, vous devrez regarder à travers le code Javascript pour le site et trouver où funcy_function() est défini. Ensuite, dans le corps de la fonction, vous verrez probablement l'URL de destination. Vous devrez également noter les noms spécifiques des variables de formulaire dans le code HTML. Vous devrez configurer vos variables avec exactement les mêmes noms. Ensuite, votre configuration boucle ressemblera à ceci:

$url = 'http://www.targeturl.com'; 
$myvars = 'myvar1=' . $myvar1 . '&myvar2=' . $myvar2; 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $myvars); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$response = curl_exec($ch); 

Cela envoie les variables de poste à l'adresse indiquée, imitant ce qui se passerait normalement de la forme. Le code html renvoyé par la page sera dans $ response si vous voulez l'analyser ou l'utiliser.