我是JSON数据传输的新手。我想让用户单击网页中的链接,该链接应将用户重定向到另一个页面,并在URL中使用他的登录凭据并将其显示在该页面中。现在,我想通过JSON发送和接收所有这些。我正在PHP环境中工作。我正在添加一个简短的代码,但我不知道该如何继续。
send.php
<?php
$data = '{ "user" : [
{ "email" : "xyz@gmail.com",
"password" : "xyz@123",
"employee_id" : 77
}
]
} ';
$url_send ="http://localhost/cwmsbi/recieve.php";
$str_data = json_encode($data);
function sendPostData($url_send, $post){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($post))
);
$result = curl_exec($ch);
curl_close($ch); // Seems like good practice
return $result;
}
echo " " . sendPostData($url_send, $str_data);
?>
然后接收.php
<?php
$json_input_data=json_decode(file_get_contents('php://input'),TRUE);
print_r( $json_input_data);
?>
现在,当我在本地主机上运行send.php
时,它将在同一页面上显示数据,但不会转到recieve.php
。
如何做到这一点?我很好奇,也需要这个。如何运行JSON
文件,应该从哪里获得结果?您的指导现在对我非常有用。
答案 0 :(得分:0)
首先,我看到您对$ data进行两次json编码(因为它定义时已经是一个json字符串,然后您执行$str_data = json_encode($data);
)。
如果您也想通过发布数据实现位置更改,则不能使用curl (POST data and redirect user by PHP CURL-请阅读此问题以获取更多信息)-我不认为您只能通过php来做到这一点。
如果我尝试达到您要达到的目标(并且我永远都不会创建一个向用户显示登录密码的页面-因为即使在电子邮件中也显示密码是不明智的做法),我建议设置将json字符串放入send.php中的$_SESSION
变量中,并使用header("Location: http://localhost/cwmsbi/recieve.php")
重定向,在此您从$_SESSION
变量中获取json数据并进行打印。
我没有举一个例子,因为我认为这非常适合您: https://stackoverflow.com/a/42215249/9606459
额外提示:即使将密码放在php $ _SESSION变量中比将其放入发布请求中更好,也请记住您做的不好,并且至少要记住在打印后在$ _SESSION变量中清空该json字符串。
例如:
unset($_SESSION['user_data']);