2009-02-06 5 views
-1

Je veux POSTER une URL en utilisant CURL et php.sérialiser formulaire à POST après avoir obtenu le contenu en utilisant CURL

Il y a une grande forme sur la page web et je ne veux pas copier manuellement toutes les variables et les mettre dans ma requête POST.

Je suppose qu'il doit y avoir un moyen de sérialiser le formulaire automatiquement (en utilisant DOM ou quelque chose) et puis juste changer les valeurs dont j'ai besoin.

Je ne pouvais pas faire de recherche sur Google à partir de celui-ci, donc je me demandais si quelqu'un aurait la gentillesse d'aider.

Alors, y a-t-il un moyen de sérialiser automatiquement un formulaire enfoui dans un tas de contenu html que je viens d'extraire d'une URL?

Merci pour toute aide, Andrew

Répondre

2
$http = new HttpQueryString(); 
$http->set($_POST); 

curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$http->get()); 

requis PECL pecl_http> = 0,22,0

+0

Comment installer PECL pecl_http dans ubuntu? –

1

Son pas clair pour moi si vous demandez comment obtenir le formulaire dans le navigateur au serveur ou comment placer le formulaire affiché dans la demande boucle. De php, en supposant le formulaire posté, il serait aussi simple que:

curl_setopt ($ handle, CURLOPT_POSTFIELDS, $ _POST);

bien qu'aucune donnée ne soit validée de cette façon. Du côté Web, vous ne savez pas pourquoi vous voudriez sérialiser le formulaire en utilisant le DOM/Javascript, au lieu de simplement le soumettre via une publication normale?

0

Je ne comprends pas la question. Il semble que vous vouliez faire un écran, gratter un formulaire, le remplir et le POSTER à la page d'où vous l'avez obtenu. Est-ce correct?

Editer en réponse au commentaire: Je vous recommande de graver le code HTML CURL avec un outil comme Simple HTML DOM (c'est ce que j'utilise pour graver avec PHP). La documentation de votre bibliothèque de choix vous aidera à déterminer comment identifier les champs du formulaire. Après cela, vous aurez envie de courber la page d'action du formulaire, avec l'attribut CURL_POST_FIELDS défini sur les valeurs que vous voulez passer au formulaire, urlencode() 'd bien sûr.

+0

exactement. J'ai en fait les variables que j'ai besoin de publier en utilisant firebug. (même si je ne peux toujours pas le faire automatiquement, ce que je demandais). – Andrew

0

Je ne sais pas ce que la question est vraiment, mais vous soit vouloir faire quelque chose comme ceci:

$fields_string = http_build_query($data_to_send); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string); 

ou vous devez examiner ceci:

$html = file_get_html('http://www.thesite.com/thepage.html'); 
foreach($html->find('input') as $element) 
echo $element->name . '<br>'; 
Questions connexes