【发布时间】:2020-05-19 16:23:12
【问题描述】:
我创建了以下脚本来向服务器发送数据,但是当我使用邮递员以 json 格式发送数据时,它发送了空白数据,以下是我的脚本
<?php
header("Content-Type: application/json; charset=UTF-8");
//open connection to mysql db
$connection = mysqli_connect("localhost","wamesh","wames9est","wam90est")
or die("Error " . mysqli_error($connection));
// recieved from app
$mtitle = $_POST['mytitle'];
$mdate = $_POST['mydate'];
$mnews = $_POST['mynews'];
echo "Response: ".$mtitle." ";
$sql_query = "INSERT INTO news (title,news,time) VALUES ('$mtitle','$mnews','$mdate')";
if (mysqli_query($connection, $sql_query)) {
echo "We just posted a news response!";
} else {
echo "Error: " . $sql_query . "<br>" . mysqli_error($connection);
}
mysqli_close($conn);
?>
这是我尝试发送的数据示例
{
"mytitle": "COVID 19 Updates",
"mynews": "COVID 19 - Breaking News",
"mydate": "19 may 2020"
}
在邮递员中显示成功,但在数据库中我只是发现添加了行但里面没有值。
【问题讨论】:
-
打印
$_POST的内容,明确服务器接收到什么数据 -
代码对我有用。一定要关闭:mysqli_close($connection);并确保您的表单指定 method="post"
-
设置这个响应头:
header("Content-Type: application/json; charset=UTF-8");没有意义,因为您的脚本输出的是纯文本或 HTML,而不是 JSON -
这可能有助于您接收来自邮递员的数据:stackoverflow.com/questions/18866571/receive-json-post-with-php
-
另外:警告:您的代码容易受到 SQL 注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者通过使用恶意输入值来破坏您的数据库。 bobby-tables.com 给出了风险解释,以及一些如何使用 PHP / mysqli 安全地编写查询的示例。 切勿将未经处理的数据直接插入您的 SQL 中。按照您现在编写代码的方式,有人可以轻松窃取、错误更改甚至删除您的数据。