2009-10-29 103 views
1

我有一个POST方法的提交表单,我想写一个脚本,可以自动提交这个表单,我之所以需要这个是为了测试目的。我很少需要大量数据来测试基于这些表单域的搜索,而且我没有时间去做这件事。这可能吗?使用PHP提交表单

回答

5

您可以使用卷曲来模拟表单提交。

// 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); 

来源:http://php.net/manual/en/book.curl.php

+0

你已经设置了curl_setopt($ ch,CURLOPT_POST,true);两次。 – luiscubal 2009-10-29 12:19:03

0

让PHP用数据填写表单并打印出一个发布表单的Javascript,PHP不能发布它自己的表单。

+0

为什么选择投票?他明确要求脚本来发布form_,这是PHP无法完成的。 – 2009-10-29 12:16:11

+1

任何降低压力的原因可能都是因为你说PHP不能做用户所要求的事情,但它有一些能够完成问题的库,正如其他答案指出的那样。我建议,如果你不想降价,可以修改你的答案或删除它。 – PTBNL 2009-10-29 13:21:24

+0

好吧,不。如果我错了,我不在乎是否我会得到低估,但是PHP库(如Snoopy)所做的只是将POST数据发布到指定的PHP文档。这与发布表单不一样......据我了解,他最初的问题是提交HTML表单,而不是简单地将数据发布到页面。 – 2009-10-29 15:24:31

0

您可以使用php.net/curl通过PHP发送POST请求。

2

如果你不舒服使用curl您可以使用PHP库调用snoopy模拟Web浏览器。它可以自动完成检索网页内容和发布表单的任务。

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

可能是最好的解决方案,一旦不是每个Web服务器都支持CURL。谢谢你的提示。 – 2011-02-15 16:52:18