0

为什么当我打电话时:

<?php

setcookie("PHPSESSID", "", time() - 3600);

?>

在会话 cookie 上它不会被删除,但如果我要在另一个 cookie 上调用它,它会被破坏吗?

这工作得很好:

<?php

setcookie("tom", "tom", time() - 3600);

?>

但上面带有会话 cookie 的示例没有。

我已经在 google chrome 和 firefox 上尝试过这个,并且在查看头文件时仍然得到相同的结果。

这是会话 cookie 的输出:

Array
(
    [_GET] => Array
        (
        )

    [_POST] => Array
        (
        )

    [_COOKIE] => Array
        (
            [PHPSESSID] => v61njiklq3kd5koc6i8i7otab7
        )

    [_FILES] => Array
        (
        )

    [GLOBALS] => Array
 *RECURSION*
)
4

4 回答 4

2
setcookie( session_name(), "", time()-3600, '/');

作品!删除会话 cookie 的缺失部分是函数“setcookie()”的最后一个参数,如“/”。

于 2013-09-08T21:20:47.643 回答
0

这是因为,当您调用脚本删除 cookie 时,会话处理程序实际上将会话 cookie 更新为仍然“在线”。您必须销毁会话,而不仅仅是(尝试)删除 cookie。

于 2013-09-08T18:41:42.313 回答
0

无论如何,您不应该像那样破坏会话,而应该使用session_destroy()破坏会话的本机函数。

通常,PHPSESSID cookie 会在下次调用 session_start() 时重新生成,这可能就是为什么看起来您没有删除 cookie。

于 2013-09-08T19:28:51.810 回答
0

要删除 session_start() 创建的“PHPSESSID”cookie,请将其设置为空。

setcookie( "PHPSESSID", "", time()-3600, '/');
于 2021-04-07T11:39:53.627 回答