clicking on submit button using php
I have a webpage with a submit button and I would like php to parse the webpage and click the submit button and get the response (it can be a link or another html page.)
Is there any way to click a submit button using php?
I know there is something like htmlunit for java that allows one to pro-grammatically fill the form fields and click submit button. But I would like to do the same in php.
Thanks开发者_Python百科
Take a look at Selenium Web application testing system.
CURL will let you get the results of a form submission
eg
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlOfFormSubmission);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
"field1"=>"data1",
"field2"=>"data2"
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$contents = curl_exec($ch);
You can also do the same thing with the PHP Stream functions
eg
$params = array('http' => array(
'method' => "post",
'content' => array("field1"=>"data1", "field2"=>"data2")
));
$ctx = stream_context_create($params);
$fp = @fopen($urlOfFormSubmission, 'rb', false, $ctx);
if (!$fp)
{
throw new Error("Problem with ".$urlOfFormSubmission);
}
$contents = @stream_get_contents($fp);
if ($contents === false)
{
throw new Error("Problem reading data from ".$urlOfFormSubmission);
}
In either case, $contents should contain the results of the form submission
The SimpleTest PHP library also has a page crawler that can analyze a HTML page and generate the appropriate POST request.
phpWebHacks looks promising for the task.
Features, as quoted from the website:
* Support HTTP/1.1
* Fetch web pages.
* Submit forms and upload files.
* Support https.
* Support HTTP cookies.
* Support HTTP redirects and Meta-refresh redirects.
* Support HTTP Authentication.
* Support proxy server.
* Support gzip encoding.
* Logging of HTTP streams for full debugging.
* Parsing HTML forms.
* Custom User-Agent.
精彩评论