0

从逻辑上讲,一旦用户退出,他们必须重新登录才能再次进入系统。我使用登录用户的一些会话数据和 cookie,我想在用户注销时删除这些会话数据和 cookie。我用

delete_cookie("cookie_name");
$this->session->sess_destroy();

并设置$config['sess_time_to_update']ro 0

但这不起作用,会话数据和 cookie 没有被删除。用户注销后,我可以做些什么来删除所有会话数据和 cookie。

4

2 回答 2

0

尝试这个 -

http://php.net/manual/en/function.setcookie.php

// unset cookies
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, '/');
    }
}

http://www.php.net/manual/en/function.setcookie.php#73484

于 2013-05-27T08:30:09.950 回答
0
$this->session->sess_destroy();

应该删除所有会话数据。你怎么知道会话数据没有被删除。就在 sess_destroy() 之后;尝试回显其中一个会话数据。

echo $this->session->userdata('item_name');

以同样的方式在删除这样的 cookie 后使用 echo -

echo get_cookie('cookie_name');

我相信,这是用户如何保持登录的逻辑。您可能没有检查登录用户的会话是否存在。您应该检查用户访问的每个页面(方法)的会话和 cookie。最好的方法是将检查器函数放在构造函数中。

于 2013-05-27T06:50:55.307 回答