没有设置cookie也会导致我的会话失败

时间:2014-10-15 13:35:39

标签: php session cookies

我使用此代码取消设置我的Cookie(感谢Stack)

if (isset($_SERVER['HTTP_COOKIE'])) {
    $cookies = explode(';', $_SERVER['HTTP_COOKIE']);
    foreach($cookies as $cookie) {
        $parts = explode('=', $cookie);
        $name = trim($parts[0]);
        setcookie($name, '', time()-1000);
        setcookie($name, '', time()-1000, '/');
    }

但这也取消了我的$_SESSION。怎么可能?

3 个答案:

答案 0 :(得分:0)

dude 会话也存储为Cookie值,其中以页面或浏览器的终止结束..

而不是取消每个cookie的选择

(即)

如果要删除名为user的cookie

setcookie("user", "", time()-3600); //deletes only that cookie

您可以看到使用print_r($_COOKIE);功能设置的Cookie ...

答案 1 :(得分:0)

Session为浏览器生成会话cookie。这基本上是会话数据在具有相同名称的文件中存储在服务器上的关键。

这就是浏览器如何记住会话。传播会话ID的方法有两种: 1.Cookies 2.URL参数

如果您不想要cookie ..您可以在Url中传递会话ID,并可以在PHP.ini中设置名称和参数

答案 2 :(得分:0)

这是因为会话的工作原理是在用户计算机上存储会话ID,然后使用此ID识别用户并找到存储在服务器上的相关sission数据。

见这里:http://www.lassosoft.com/Tutorial-Understanding-Cookies-and-Sessions

我认为您删除Cookie时会删除会话ID。在循环访问cookie时尝试并识别会话ID,并设置if ststement以使会话错过被删除。