php接收post方式的json数据并存入数据库的问题

qq_16725633 2016-04-17 10:15:56
<?php
ini_set("error_reporting","E_ALL & ~E_NOTICE");
/*连接数据库*/
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$zz = ('$_POST[location]','$_POST[oxygen]','$_POST[negative]','$_POST[temp]','$_POST[humidity]','$_POST[pm]');
$mz = json_decode($zz);
mysql_select_db("emp", $con);
$sql="INSERT INTO tianqi (location, oxygen, negative, temp, humidity, pm)
/*通过$_post变量从表单中取回值*/
VALUES($zz)";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";

mysql_close($con)
请问下我这个代码对吗, 服务器需要接收从客户端传来的json数据
客户端传来的数据类型是这样的:{"id":"1","location":"汉字","oxygen":"3.33","negative":"23.2","humidity":"22","temp":"2.33","pm":"6"}
...全文
1126 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38651940 2019-02-28
  • 打赏
  • 举报
回复
你把这个打印一下就知道了 $_SERVER;
weixin_38651940 2019-02-28
  • 打赏
  • 举报
回复
引用 7 楼 qq_28582445 的回复:
[quote=引用 6 楼 xuzuning 的回复:] $s = file_get_contents('php://input');
请问如何判断这里获取到的JSON来源?如果不判断,任何地方都可以模拟提交,如何限制为指定域名提交的才有效呢?[/quote] 可以从提交过来的header里看到提交的域名,你把域名取出来,然后你定义一个数组保存你允许提交的域名,再判断提交的域名在不在数组里面,如果存在再执行代码,不存在就return错误信息,怎么从header取域名具体看这里https://blog.csdn.net/ahaotata/article/details/84999015
qq_28582445 2019-02-17
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
$s = file_get_contents('php://input');

请问如何判断这里获取到的JSON来源?如果不判断,任何地方都可以模拟提交,如何限制为指定域名提交的才有效呢?
山水天元 2016-04-18
  • 打赏
  • 举报
回复
$mz = json_decode($zz); 这个之后 $mz就是一个数组了 取数组里面的值就行了啊
ayzen1988 2016-04-18
  • 打赏
  • 举报
回复
你的$zz,没看过这样的写法 我猜应该是如下

$zz = json_decode($_POST['zz'], true);
//$_POST['zz']为你接收json的值

$sql = "INSERT INTO tianqi (location, oxygen, negative, temp, humidity, pm) values ('".$zz['location']."')";
//后面的值,自己加上
xuzuning 2016-04-18
  • 打赏
  • 举报
回复
$s = file_get_contents('php://input');
qq_16725633 2016-04-18
  • 打赏
  • 举报
回复
@u012228558 print_r($_POST); 打印不出来
龙之末图 2016-04-18
  • 打赏
  • 举报
回复
{"id":"1","location":"汉字","oxygen":"3.33","negative":"23.2","humidity":"22","temp":"2.33","pm":"6"}这是一个JSON字符串,是一个值,应该是赋给一个值传给你的,能和对方联系的话,和对方联系下,不行就print_r($_POST);看里面的值,别怕麻烦
qq_16725633 2016-04-18
  • 打赏
  • 举报
回复
引用 1 楼 zhangbin1988 的回复:
你的$zz,没看过这样的写法 我猜应该是如下

$zz = json_decode($_POST['zz'], true);
//$_POST['zz']为你接收json的值

$sql = "INSERT INTO tianqi (location, oxygen, negative, temp, humidity, pm) values ('".$zz['location']."')";
//后面的值,自己加上
@ayzen1988 可是需要先接收客户端传来的值啊 该怎么接收客户端传来的值然后赋值在$zz上 是这样吗 $zz = json_decode('$_POST[location]','$_POST[oxygen]','$_POST[negative]','$_POST[temp]','$_POST[humidity]','$_POST[pm]', true);

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧