2009-10-29 3 views
1

J'ai un formulaire de soumission avec la méthode POST, je veux écrire un script qui peut soumettre automatiquement ce formulaire, la raison pour laquelle j'en ai besoin est à des fins de test. J'ai besoin de beaucoup de données en peu de temps pour tester une recherche basée sur ces champs de formulaire, et je n'ai pas le temps de le faire manuellement. Est-ce possible?Soumission d'un formulaire en utilisant PHP

Répondre

5

Vous pouvez utiliser curl pour simuler un envoi de formulaire.

// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/script.php"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POST, true); //enable POST method 

// prepare POST data 
$post_data = array('name1' => 'value1', 'name2' => 'value2', 'name3' => 'value3'); 

// pass the POST data 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 

// grab URL and pass it to the browser 
curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 

Source: http://php.net/manual/en/book.curl.php

+0

Vous avez défini curl_setopt ($ ch, CURLOPT_POST, true); deux fois. – luiscubal

0

Laissez PHP remplir le formulaire avec des données et imprimez un Javascript qui affiche le formulaire, PHP ne peut pas le poster sur votre propre.

+0

Pourquoi le vote à la baisse? Il demande explicitement un script pour _post a form_, que PHP ne peut pas accomplir. –

+1

Tout downvoting est probablement dû au fait que vous avez dit PHP ne peut pas faire ce que l'utilisateur demandait, mais il a des bibliothèques qui peuvent accomplir ce qui a été demandé, comme d'autres réponses l'ont souligné. Je suggère que si vous ne voulez pas de downvotes, modifiez votre réponse en quelque sorte ou supprimez-la. – PTBNL

+0

Eh bien, non. Je me fiche de savoir si j'aurais des downvotes si je devais me tromper, mais ce que font les bibliothèques PHP (comme Snoopy) consiste simplement à publier des données avec POST dans un document PHP spécifié. Ce n'est pas la même chose que de poster un formulaire ... Comme je l'ai compris, sa question initiale était de soumettre un formulaire HTML, et non simplement de publier des données sur une page. –

0

Vous pouvez utiliser php.net/curl pour envoyer des requêtes POST avec PHP.

2

si vous n'êtes pas à l'aise avec boucle, vous pouvez utiliser une bibliothèque php appelé snoopy qui simule un navigateur Web. Il automatise la tâche de récupération du contenu de la page Web et des formulaires de publication.

<?php 
/* load the snoopy class and initialize the object */ 
require('../includes/Snoopy.class.php'); 
$snoopy = new Snoopy(); 

/* set some values */ 
$p_data['color'] = 'Red'; 
$p_data['fruit'] = 'apple'; 

$snoopy->cookies['vegetable'] = 'carrot'; 
$snoopy->cookies['something'] = 'value'; 

/* submit the data and get the result */ 
$snoopy->submit('http://phpstarter.net/samples/118/data_dump.php', $p_data); 

/* output the results */ 
echo '<pre>' . htmlspecialchars($snoopy->results) . '</pre>'; 
?> 
+0

Probablement la meilleure solution, une fois pas tous les serveurs Web prennent en charge CURL. Merci pour le conseil. –

Questions connexes