PHP和JS-If语句中的Cookie值导致错误

问题描述 投票:0回答:1

我正在尝试使用HTML,JS和PHP来实现以下功能:

  1. 当按下HTML“按钮”时,它为$_GET数组提供值;
  2. [当这些值存在于$_GET数组上时,会弹出一个JavaScript确认窗口;
  3. 如果用户按下“ OK”,则JS将$_COOKIE的值赋予true数组。如果用户按下“ CANCEL”,则JS将$_COOKIE的值赋予false数组;
  4. 最后使用PHP检查$_COOKIE数组,如果为true,则执行某些操作。否则它什么也不做。

每个步骤的代码在哪里:

// STEP 1
<a href="page.php?remove=true&id-organ=1">Remove</a>

// STEP 2 AND 3
if (isset($_GET['remove']) && isset($_GET['id-organ'])) {
       echo '
           <script>
                var option = confirm("REMOVE?");
                if (option == true) {
                    document.cookie = "option = true";
                } else {
                    document.cookie = "option = false";
                }
           </script>
       ';
}

// STEP 4
if ($_COOKIE['option'] == true) {
    echo '
        <script>
            window.alert("ORGAN WAS REMOVED!\n");
        </script>
    ';

} 

如果按下JS确认窗口“确定”,则一切正常,很棒,没有问题。

如果按下JS确认窗口“ CANCEL”,则无论如何都会发生STEP 4 if语句。

  • 我已经尝试过console.log(option)对于CANCEL来说是错误的按钮。
  • 我尝试过echo $_COOKIE['option']也是错误的用于取消按钮。

这在字面上反对所有“编程哲学”是没有意义的。 。 。

有人可以告诉我为什么会这样吗?难道我做错了什么?这种功能是否有更好的方法?所有类型的帮助将不胜感激!谢谢您的时间♥️

javascript php html setcookie confirm
1个回答
0
投票

您在JS中设置的cookie值始终是一个字符串。 (根据定义,Cookie内容is只是文本。没有人阻止您将该值作为其他内容after,您以字符串形式收到了它-例如,您可以设置JSON-编码的对象作为cookie值。但这不会改变事实,即cookie本身的值始终是文本。)

if ($_COOKIE['option'] == true)

您在PHP中的比较在这里是错误的-因为在这里,您正在[[not与字符串进行比较。

text

'true''false'在PHP中都是true-'true' == true'false' == true都得出true。

这里您需要的是if ($_COOKIE['option'] == 'true')(甚至使用===,以确保绝对没有歧义。]

© www.soinside.com 2019 - 2024. All rights reserved.