【问题标题】:Pass Variable Via JSON with CURL使用 CURL 通过 JSON 传递变量
【发布时间】:2019-05-22 02:50:14
【问题描述】:

如何通过 JSON 将表单变量传递到另一个页面?我创建了两个 php 文件,文件名为 page_login.php 和 login.php。但是在运行 login_post.php 时,$json 值无法传递给 login.php

page_login.php:

$email = test@gmail.com;
$password = 123;

$json = array('email' => $email, 'password' => hash("sha256",$password));
$json = json_encode($json);

$ch = curl_init();      
curl_setopt($ch, CURLOPT_URL,"https://localhost/login.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);                                                                                                           
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);
curl_close ($ch);

login.php:

$json=json_decode($_REQUEST["json"],true);
print $json;

【问题讨论】:

  • 需要设置Content-Type header,然后在接收端读取php://input
  • 或者,curl_setopt($ch, CURLOPT_POSTFIELDS, ['json'=>$json]); 在发送端。但是你没有传递 JSON,只是简单的旧 POST 值。
  • 或者,直接跳过 JSON 编码;在接收端查看$_POST['email']。这三个选项中的任何一个都可以解决您的问题。
  • 我可以知道为什么如果我将 json 数据发送到 localhost login.php,它的工作但如果发送到另一台服务器不起作用?

标签: php json curl


【解决方案1】:

试试这个

page_login.php

$email = "test@gmail.com";
$password = "123";

$json = array('email' => $email, 'password' => hash("sha256",$password));
$json = json_encode($json);

$ch = curl_init();      
curl_setopt($ch, CURLOPT_URL,"http://localhost/login.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array("json" => $json)));                                                                                                           
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);
curl_close ($ch);

echo $server_output;

登录.php

$json=json_decode($_REQUEST["json"],true);
foreach ($json as $key => $value) {
    echo $key . ": " . $value;
    echo "<BR>";
}

【讨论】:

  • 我可以知道为什么如果我将 json 数据发送到 localhost login.php,它的工作但如果发送到另一台服务器不起作用?
  • 应该可以了,你有没有试过从服务器 login.php 获取响应并在 page_login.php 中输出只是为了验证服务器是否收到请求?
  • 是的,但它只显示一个空白页面,我的登录 php: $json=json_decode($_REQUEST["json"],true); print_r($json);
  • @Ichida 我确实更新了 page_login.php,你能运行该文件并将CURLOPT_URL 替换为新服务器吗
  • 在你的 login.php 上,你能做到吗echo "&lt;pre&gt;"; var_dump($_REQUEST); echo "&lt;/pre&gt;"; $json=json_decode($_REQUEST["json"],true); print_r($json);
猜你喜欢
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 2014-02-11
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多