[英]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.