用PHP可以提交表单提交吗?

时间:2010-06-09 02:02:13

标签: php forms methods submit

使用PHP可以创建伪表单提交而无需生成表单吗?只是初始化并声明变量,然后通过POST或GET方法将它们传递给另一个页面?

5 个答案:

答案 0 :(得分:4)

您正在寻找的是cURL,一个用于创建此类请求的库。

答案 1 :(得分:0)

当然。您可以使用cURL执行此操作,此链接应该解释基础:http://curl.haxx.se/docs/httpscripting.html - 但是在互联网上有数百个cURL教程可以执行此类操作。

一旦掌握了cURL,它就很容易理解和使用。

这是一个代码示例:

<?
define('POSTURL', 'http://www.test.com/search.php');
 define('POSTVARS', 'listID=29&request=suba&SubscribeSubmit=Subscribe&EmailAddress=');// POST VARIABLES TO BE SENT

 $ch = curl_init(POSTURL);
 curl_setopt($ch, CURLOPT_POST      ,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS    ,POSTVARS);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
 curl_setopt($ch, CURLOPT_HEADER      ,0);  // DO NOT RETURN HTTP HEADERS
 curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);  // RETURN THE CONTENTS OF THE CALL
 $data = curl_exec($ch);

?>

这样的事情应该有用。

答案 2 :(得分:0)

理论上,您可以在Apache中为此表单提交生成内部请求;在实践中,你将不得不使用PHP的http流包装或卷曲,就像其他人建议的那样。

答案 3 :(得分:0)

你可以尝试做这样的事情

$_POST = array(
                        'lname'=>urlencode($last_name),
                        'fname'=>urlencode($first_name),
                        'title'=>urlencode($title),
                        'company'=>urlencode($institution),
                        'age'=>urlencode($age),
                        'email'=>urlencode($email),
                        'phone'=>urlencode($phone)
                );

$_GET = array(); // no get
$_SERVER['REQUEST_METHOD'] = "POST";
$_SERVER['REQUEST_URI'] = '/anotherpage.php';
// set REQUEST_PATH, REQUEST_PATHINFO, REQUEST_SCRIPTNAME etc
// now it will be like this anotherpage.php was requested with a form
include("anotherpage.php");

如果你想避免使用cURL,但我不推荐它,因为它会很快乱。

答案 4 :(得分:0)

我不确定你是否可以设置POST选项,但只要GET是可以接受的,你就可以很容易地做到这一点(我不够专业,无需测试就可以解决这个问题并承诺没有错误,所以你会有测试):

$url = "http://foo.com?"
while(list($key, $value) = each($_POST)
 $url .= "$key" . "=" . $value . "&";
header(Location: $url);

这会将您的POST变为GET。