【问题标题】:PHP checks cookie value for response, Response won't revert back after cookie is clearedPHP检查响应的cookie值,清除cookie后响应不会恢复
【发布时间】:2016-07-26 11:08:58
【问题描述】:

所以我已经搜索了 w3schools 和这个不错的网站一段时间,但我无法弄清楚。

我有一个脚本在加载浏览器时在用户会话中创建一个 cookie,另一个脚本将检查所述 cookie 的值并根据值响应 2 个回显。

创建 cookie 的脚本是:

<?php
$cookie_name = "CTF";
$cookie_value = "ChangeThis";
if(!isset($_COOKIE[$cookie_name])) {
setcookie($cookie_name, $cookie_value, time() + 86400, "/", NULL);
}
?>

我的 IF 检查值如下:

<?php
if($_COOKIE[$cookie_value] = "CTF") {
    echo "Congratulations. Your token code is 4HeWPzK63Lf5NkGS";
    } else { 
    echo "Your cookie is not set yet.";
    }
?>

代码有效,当 cookie 更改为 CTF 时,它会回显正确的行。但是,当我删除 cookie 并刷新页面时,基本上将 cookie 重置为“ChangeThis”的值,第一个回显仍然出现在页面上。

有人能指出正确的方向吗?

【问题讨论】:

    标签: php if-statement cookies echo


    【解决方案1】:

    问题是您的if 条件。您使用了= 而不是==。您正在分配值而不是比较。条件检查分配是否成功。您需要的是以下语句:

    if($_COOKIE[$cookie_name] == "CTF") 
    

    另外,cookie 的值不是“CTF”,这是 cookie 的名称,你应该和你设置的值比较。

    【讨论】:

    • 此外,它应该类似于 if($_COOKIE["CTF"] != "ChangeThis") CTF 是 cookie 名称,而不是 cookie 值
    • @maalls 你是对的.. 我已经更新了答案.. 然后 OP 也应该检查值。
    • 啊,是的,不敢相信我忽略了这一点。对于检查 cookie 值的 IF 语句,我最初希望它检查 cookie 的值是否已更改(我本质上是在创建 CTF 场景)。所以可以这样写:IF($_COOKIE["CTF"]="CTF"
    • if($_COOKIE["CTF"]="CTF" 将始终为真,除非由于某种原因分配失败。您将分配与比较混淆了。
    • 是的,当我再次去看它时才意识到。是否可以让 IF 语句检查 cookie 的值而不是名称本身?
    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 2013-09-02
    • 1970-01-01
    • 2012-04-06
    • 2019-08-30
    • 2017-07-07
    • 2016-08-29
    • 2012-12-15
    相关资源
    最近更新 更多