簡體   English   中英

檢查是否從Javascript設置了$ _SESSION變量

[英]Check if a $_SESSION variable is set from Javascript

我正在構建一個消息系統來了解它是如何工作的,而且我已經擁有了很多東西。 我可以登錄並在電路板上發帖,但現在我希望能夠編輯它。 后端已准備就緒,它會收到POST請求

基本上我需要做的是檢查當前登錄的用戶是否是來自Javascript的某個帖子的作者,以顯示或隱藏編輯按鈕。 我知道如何判斷用戶是否從PHP登錄,以便在您不是作者時阻止請求,但是我無法隱藏或顯示按鈕,因為帖子是使用JS從<template>以動態生成的。

登錄片段:

$_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);
}

我最初想過用<script><?php ?>從HTML設置一個帶有用戶ID的變量,但是用戶可以從控制台手動設置該變量並顯示按鈕。

我原本想過用<script><?php ?>從HTML設置一個帶有用戶ID的變量

是的,這是一種正確的方法。 基本上,使用PHP告訴JavaScript哪些帖子實際上屬於當前用戶。

但隨后用戶可以從控制台手動設置該變量並顯示按鈕

真正。 沒有辦法 ,一旦你已經將它發送到瀏覽器向用戶干預安全信息。 這是因為用戶可以控制在瀏覽器中執行的內容。 不要將按鈕可見性視為安全功能,而應將其視為一種便利 - 讓用戶體驗更加愉悅。

應用程序安全性確實在服務器上實施。 只是確保不允許一個用戶編輯其他用戶的帖子,並且不相信瀏覽器的內容。 驗證輸入。

理想情況下,我更願意將后期渲染邏輯放在服務器端。

但是當你的解決方案專注於javascript時,一個選項使PHP呈現一個javascript變量,告訴用戶是否是帖子作者。

例:

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

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

執行此操作,您將擁有名為isAuthor javascript腳本變量,其值為“1”,即用戶是作者。

-

但正如我所說,這似乎不是解決問題的好方法。 這是PHP可以更好地處理的東西,而不會將您的邏輯暴露給客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM