我正在构建一个消息系统来了解它是如何工作的,我已经有了 几乎所有的东西。我可以登录并在论坛上发帖,但现在我希望能够对其进行编辑。后端准备就绪,接收POST请求
基本上我需要做的是检查当前登录的用户是否是来自 Javascript 的某个帖子的作者,以显示或隐藏编辑按钮。我知道如何判断用户是否从 PHP 登录,以便在您不是作者时阻止请求,但我无法隐藏或显示按钮,因为帖子是从 <template>
动态生成的使用 JS。
登录片段:
$_SESSION["userid"] = $userid;
编辑检查 PHP 片段(有点伪代码):
if ($_POST["action"] == "modifypost" && isset($_POST["postid"]) && isset($_POST["content"]))
{
$post = get_post($_POST["postid"]);
if ($post.userid != $_SESSION["userid"])
{
die("you are not allowed");
}
//MySQL queries
}
后动态生成(缩写):
function add_post(post) {
var t = document.querySelector('#historypost');
t.content.querySelector(".content").innerHTML = post.content;
var clone = document.importNode(t.content, true);
document.body.appendChild(clone);
}
我最初想用来自 HTML 的用户 ID 设置一个变量 <script>
和 <?php ?>
,但随后用户将能够从控制台手动设置该变量并显示按钮。
最佳答案
I had originally thought of setting a variable with the user ID from HTML with
<script>
and<?php ?>
是的,这是一种正确的方法。基本上,使用 PHP 告诉 JavaScript 哪些帖子实际上属于当前用户。
but then the user would be able to manually set that variable from the console and show the buttons
没错。一旦您将信息发送到浏览器,就没有办法保护信息免受用户干预。这是因为用户可以控制在浏览器中执行的内容。与其将按钮可见性视为一项安全功能,不如将其视为一种便利 - 让用户体验更加愉悦。
应用程序安全性实际上是在服务器上强制执行的。只要确保不允许一个用户编辑另一个用户的帖子,并且不要相信来自浏览器的内容。验证输入。
关于javascript - 检查是否从 Javascript 设置了 $_SESSION 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45395249/