发布到 PHP 脚本中的另一个页面

2022-08-30 14:32:03

如何在 php 脚本中向其他 php 页面发出发布请求?我有一台前端计算机作为 html 页面服务器,但是当用户单击按钮时,我希望后端服务器进行处理,然后将信息发送回前端服务器以显示用户。我是说我可以在后端计算机上有一个php页面,它会将信息发送回前端。那么再一次,我如何从php页面向另一个php页面执行POST请求?


答案 1

让PHP执行POST请求的最简单方法可能是使用cURL,要么作为扩展,要么简单地扩展到另一个进程。下面是一个帖子示例:

// where are we posting to?
$url = 'http://foo.com/script.php';

// what post fields?
$fields = array(
   'field1' => $field1,
   'field2' => $field2,
);

// build the urlencoded data
$postvars = http_build_query($fields);

// 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, $postvars);

// execute post
$result = curl_exec($ch);

// close connection
curl_close($ch);

另请查看Zend框架中的Zend_Http组类,它提供了一个功能强大的HTTP客户端,直接用PHP编写(不需要扩展)。

2014 EDIT - 嗯,自从我写那篇文章以来已经有一段时间了。这些天值得检查Guzzle,它再次可以使用或不可以使用卷曲扩展。


答案 2

假设你的php安装有CURL扩展,这可能是最简单的方法(如果你愿意的话,也是最完整的)。

示例代码段:

//set POST variables
$url = 'http://domain.com/get-post.php';
$fields = array(
                      'lname'=>urlencode($last_name),
                      'fname'=>urlencode($first_name),
                      'email'=>urlencode($email)
               );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
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);

积分归 http://php.dzone.com。另外,不要忘记访问PHP手册中的相应页面


推荐