检查是否从Javascript设置了$ _SESSION变量

时间:2017-07-30 00:23:37

标签: javascript php jquery

我正在构建一个消息系统,以了解它是如何工作的,而且我已经有了 几乎所有的东西。我可以登录并在电路板上发帖,但现在我希望能够编辑它。后端已准备就绪,它会收到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的变量,但是用户可以从控制台手动设置该变量并显示按钮。

2 个答案:

答案 0 :(得分:2)

  

我原本想过使用<script><?php ?>

的HTML设置带有用户ID的变量

是的,这是一种正确的方法。基本上,使用PHP告诉JavaScript哪些帖子实际上属于当前用户。

  

然后用户可以从控制台手动设置该变量并显示按钮

真。一旦您将信息发送到浏览器,就有无法来保护用户干扰的信息。这是因为用户可以控制在浏览器中执行的内容。不要将按钮可见性视为安全功能,而应将其视为一种便利 - 让用户体验更加愉悦。

应用程序安全性确实在服务器上实施。只是确保不允许一个用户编辑其他用户的帖子,并且不相信浏览器的内容。验证输入。

答案 1 :(得分:1)

理想情况下,我更愿意将后期渲染逻辑放在服务器端。

但是当你的解决方案专注于javascript时,一个选项会让PHP呈现一个javascript变量,告诉用户是否是帖子作者。

示例:

在PHP文件中,在HTML呈现部分中,您可以执行以下操作:

<script>var isAuthor = '<?php echo ($post.userid == $_SESSION["userid"])'; ?></script>

执行此操作,您将拥有名为isAuthor的javascript脚本变量,其值为“1”,用户是作者。

-

但正如我所说,这似乎不是解决问题的好方法。这是PHP可以更好地处理的事情,而不会将您的逻辑暴露给客户端。