【发布时间】:2021-06-25 20:07:53
【问题描述】:
我正在努力在 php 中创建我的第一个 API,并且我在使用简单的 POST 请求时遇到了一些问题。我几乎在所有地方都在搜索我的代码的一些替代方案,但它似乎没问题。你们能帮我看看最后一次吗?谢谢!
方法:
function create_msg(){
// query to insert record
$query = "INSERT INTO
" . $this->table_name . "
SET
msg_key=:msg_key, msg_id=:msg_id, msg_author=:msg_author, msg_txt=:msg_txt";
// prepare query
$stmt = $this->conn->prepare($query);
// sanitize
$this->msg_key=htmlspecialchars(strip_tags($this->msg_key));
$this->msg_id=htmlspecialchars(strip_tags($this->msg_id));
$this->msg_author=htmlspecialchars(strip_tags($this->msg_author));
$this->msg_txt=htmlspecialchars(strip_tags($this->msg_txt));
// bind values
$stmt->bindParam(":msg_key", $this->msg_key);
$stmt->bindParam(":msg_id", $this->msg_id);
$stmt->bindParam(":msg_author", $this->msg_author);
$stmt->bindParam(":msg_txt", $this->msg_txt);
// execute query
if($stmt->execute()){
return true;
}
return false;
}
创建.php:
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
include_once '../config/database.php';
include_once '../models/msg.php';
$database = new Database();
$db = $database->getConnection();
$item = new msg($db);
$data = json_decode(file_get_contents("php://input"));
$item->msg_key = $data->msg_key;
$item->msg_id = $data->msg_id;
$item->msg_author = $data->msg_author;
$item->msg_txt = $data->msg_txt;
var_dump($data);
if($item->create_msg()){
echo 'OK';
} else{
echo 'Not OK';
}
?>
【问题讨论】:
-
var_dump($data);是否显示预期结果? -
也许您应该查看文档以了解
htmlspecialchars()和strip_tags()的实际作用。提示:这绝对与数据库无关。 -
@miken32 每个网站甚至在堆栈中都使用 htmlspecialchars() 清理数据并使用 strip_tags() 删除任何 html 标签
-
@Barmar 实际上是的,它似乎充满了信息。
object(stdClass)#4 (4) { [ "msg_key" ]=> string(9) "123456789" [ "msg_id" ]=> string(6) "A00006" [ "msg_author" ]=> string(6) "sandro" [ "msg_txt" ]=> string(3) "lol" } -
你在哪里设置
$item->table_name?