为什么有时候cookie既不会被取消也不会被覆盖?

时间:2017-06-30 16:00:46

标签: php cookies

今天我遇到了一个奇怪的问题。我有一个代码,有时会在cookie中写一些东西,有时会覆盖它。

当该cookie不存在时,我的代码也能正常工作。我的意思是,当我清除所有浏览器的cookie并执行我的代码时,一切都很好。但在不知名的时候,那个cookie将是不变的,固定的和坚定的。我的意思是它不会再被覆盖,甚至不会被取消。

这是我的代码:(但它起初完全有效)

.
.
    if( isset( $_GET['u'] ) && ( $_GET['u'] == 'true' || $_GET['u'] == 'false' ) ){
        if( isset($_COOKIE['qanda_unanswered_status']) ) {
            if ( $_COOKIE['qanda_unanswered_status'] != $_GET['u'] ){
                setcookie("qanda_unanswered_status", $_GET['u'], 2147483647);   
            }
        } else {
            setcookie("qanda_unanswered_status", $_GET['u'], 2147483647);   
        }
    }
.
.

    if (isset($_GET['u']) && in_array($_GET['u'], ['true', 'false']) && (!isset($_COOKIE['qanda_unanswered_status']) || $_COOKIE['qanda_unanswered_status'] != $_GET['u']) ) {
        setcookie("qanda_unanswered_status", $_GET['u'], 2147483647);
        $_COOKIE['qanda_unanswered_status'] = $_GET['u'];
    }
.
.

这都是关于cookie的。无论如何,你有任何线索,我该如何调试这个问题?什么时候cookie永远不变?我的意思是即使unset($_COOKIE['sth'])也无法销毁它。

你对这样的问题有什么线索吗?

1 个答案:

答案 0 :(得分:2)

您无法使用unset()删除Cookie,您需要设置过去的过期时间,例如:

setcookie("qanda_unanswered_status", "", time() - 3600); // one hour ago

然后将在浏览器上删除cookie。