我正在尝试编写一个简化的中间层,它转发从前端收到的$ _POST并返回从服务器端收到的响应。
以下是我发送$ _POST的PHP:
<?php
$username= 'testuser';
$password = '123' ;
$fields = array('username' => $username, 'password' => $password);
echo 'hello world' ; //checking
$url = 'url';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>
这是接收curl的php文件,只是回显$ _POST(用于检查是否正确接收)。
<?php
if (isset($_POST["username"]) && !empty($_POST["username"])) {
echo $_POST["username"];}
if (isset($_POST["password"]) && !empty($_POST["password"])) {
echo $_POST["password"];}
?>
当我在我的网络服务器上运行时,我只是得到了#34; Hello world&#34;背部。为了获得响应用户名/密码,我需要更改什么?
答案 0 :(得分:0)
它需要一个查询,而不是一个数组,如下所示:
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
答案 1 :(得分:0)
我发现这个非常有用的教程可以发送标准的$ _POST请求并显示它们的输出:http://davidwalsh.name/curl-post
这是我的程序,它将$ _POST字段转发到另一个php文件,发送的PHP程序:
<?php
//mid1.php
$username= 'testuser';
$password = '123' ;
$url = 'https://xxxx/mid2.php';
$fields = array('username' => urlencode($username),'password' => urlencode($password));
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
$result = curl_exec($ch);
curl_close($ch);
?>
这是接收POST的php程序,只是回应:
<?php
//mid2.php
if (isset($_POST["username"]) && !empty($_POST["username"])) {
echo $_POST["username"];}
if (isset($_POST["password"]) && !empty($_POST["password"])) {
echo $_POST["password"];}
?>