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