我想创建一个 POST 方法的表单,将详细信息发送到另一台服务器的 PHP 脚本(即不是其本地主机)。这是否可能?我想 GET 方法可以,那么 POST 方法可行吗?
<form method="POST" action="http://the.other.server.com/script.php">
如果你想在你的服务器上实现这个功能(即让你的服务器充当代理),你可以使用cURL。
//extract data from the post
extract($_POST);
//set POST variables
$url = 'http://domain.com/get-post.php';
$fields_string = "";
$fields = array(
'lname'=>urlencode($last_name), // Assuming there was something like $_POST[last_name]
'fname'=>urlencode($first_name)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
$fields_string = rtrim($fields_string,'&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
但是如果你只想向另一个服务器发送一个POST请求,你可以直接更改action
属性:
<form action="http://some-other-server.com" method="POST">
在 Stack Overflow 上还有另一个问题,展示了更好的将变量转为 URL 的方法。这个方法更好是因为上面回答中的方法在使用嵌套关联数组(也称哈希)时会出现错误。
如果你确实想要手动构建查询字符串,那么可以这样做。然而,http_build_query 会让你的“将数据转成 POST 可用的 URL 字符串”部分变得不必要。- Benjamin Powers Nov 28 '12 at 2:48