我正在尝试使用HTML,JS和PHP来实现以下功能:
$_GET
数组提供值;$_GET
数组上时,会弹出一个JavaScript确认窗口;$_COOKIE
的值赋予true
数组。如果用户按下“ CANCEL”,则JS将$_COOKIE
的值赋予false
数组;$_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']
也是错误的用于取消按钮。 这在字面上反对所有“编程哲学”是没有意义的。 。 。
有人可以告诉我为什么会这样吗?难道我做错了什么?这种功能是否有更好的方法?所有类型的帮助将不胜感激!谢谢您的时间♥️
您在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')
(甚至使用===
,以确保绝对没有歧义。]