【发布时间】:2017-07-30 00:23:36
【问题描述】:
我正在构建一个消息系统来了解它的工作原理,而且我已经掌握了 几乎所有东西。我可以登录并在板上发帖,但现在我希望能够对其进行编辑。后端准备好了,它接收到一个 POST 请求
基本上我需要做的是检查当前登录的用户是否是来自 Javascript 的某个帖子的作者,以显示或隐藏编辑按钮。我知道如何判断用户是否从 PHP 登录,以便如果您不是作者,它会阻止请求,但我无法隐藏或显示按钮,因为帖子是使用 JS 从<template> 动态生成的。
登录sn-p:
$_SESSION["userid"] = $userid;
编辑检查 PHP sn-p(有点伪代码):
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);
}
我最初想用<script> 和<?php ?> 的HTML 用户ID 设置一个变量,但随后用户将能够从控制台手动设置该变量并显示按钮。
【问题讨论】:
-
您为什么要关心用户是否向自己显示按钮?无论如何,您需要检查服务器端的请求。如果整个请求是假的,或者它是否使用您的 js 创建它,这是否重要? IMO,您只需要担心用户更改其他用户 js (XSS) 并验证用户请求是否是预期的 (CSRF)。如果他们仅在他们眼中使用控制台来更改您的网站。让他们。
-
如果他们无法保存更改,因为您在
Post上进行了检查,那么他们是否尝试编辑 javascript 以显示编辑按钮等都没关系。
标签: javascript php jquery