我正在构建一个消息系统,以了解它是如何工作的,而且我已经有了 几乎所有的东西。我可以登录并在电路板上发帖,但现在我希望能够编辑它。后端已准备就绪,它会收到POST请求
基本上我需要做的是检查当前登录的用户是否是来自Javascript的某个帖子的作者,以显示或隐藏编辑按钮。我知道如何判断用户是否从PHP登录,以便在您不是作者时阻止请求,但是我无法隐藏或显示按钮,因为帖子是使用<template>
使用$_SESSION["userid"] = $userid;
生成的JS。
登录片段:
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
}
编辑检查PHP代码段(有点伪代码):
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);
}
动态后生成(缩写):
<script>
我原本以为使用<?php ?>
和{{1}}的HTML设置带有用户ID的变量,但是用户可以从控制台手动设置该变量并显示按钮。
答案 0 :(得分:2)
我原本想过使用
的HTML设置带有用户ID的变量<script>
和<?php ?>
是的,这是一种正确的方法。基本上,使用PHP告诉JavaScript哪些帖子实际上属于当前用户。
然后用户可以从控制台手动设置该变量并显示按钮
真。一旦您将信息发送到浏览器,就有无法来保护用户干扰的信息。这是因为用户可以控制在浏览器中执行的内容。不要将按钮可见性视为安全功能,而应将其视为一种便利 - 让用户体验更加愉悦。
应用程序安全性确实在服务器上实施。只是确保不允许一个用户编辑其他用户的帖子,并且不相信浏览器的内容。验证输入。
答案 1 :(得分:1)
理想情况下,我更愿意将后期渲染逻辑放在服务器端。
但是当你的解决方案专注于javascript时,一个选项会让PHP呈现一个javascript变量,告诉用户是否是帖子作者。
示例:
在PHP文件中,在HTML呈现部分中,您可以执行以下操作:
<script>var isAuthor = '<?php echo ($post.userid == $_SESSION["userid"])'; ?></script>
执行此操作,您将拥有名为isAuthor
的javascript脚本变量,其值为“1”,用户是作者。
-
但正如我所说,这似乎不是解决问题的好方法。这是PHP可以更好地处理的事情,而不会将您的逻辑暴露给客户端。