【问题标题】:CodeIgniter's sess_destroy doesn't workCodeIgniter 的 sess_destroy 不起作用
【发布时间】:2012-10-01 08:28:11
【问题描述】:

我有这个控制器:

    function Logout() {
        $this->session->sess_destroy();
        redirect('/');
    }

非常简单。但它不起作用。就这么简单 - 会话仍然被存储。我尝试在所有会话中使用unset_userdata(目前是两个),但它也不起作用。

【问题讨论】:

  • 你是否也在使用 CodeIgniter 的会话类来声明你的会话? CI 使用与原生 PHP 会话不同的系统,因此如果您声明 $_SESSION['somevar'] 并尝试使用 CI 的会话类将其删除,它将无法正常工作。
  • 是的,我在另一个文件中使用set_userdata
  • 是否会在调用默认控制器 ('/') 后立即重置它们,也许?您是否尝试在重定向之前回显这些会话值之一?
  • 我已经这样做了:$this->session->sess_destroy(); print_r($this->session->all_userdata()); 它向我显示了所有数据,就像它甚至没有被触及一样。
  • 这是 CodeIgniter 的“正常”行为:由于会话保存在 cookie 中,这些值仅在下一页加载时才会有效删除。所以,使用redirect('/') 应该清除这些;它们是否仍然存在于默认控制器上?

标签: codeigniter


【解决方案1】:

您需要将 $config['sess_cookie_name'] 更改为其他动态名称,因为有时相同的变量会在您的浏览器特别是 IE 上发生冲突。

你将不得不去 config 文件夹和 config.php 文件

转到应用程序->config->config.php

$config['sess_cookie_name'] = 'ci_session2'; // 将 ci_session 重命名为可以解决您的问题的其他名称。

【讨论】:

    猜你喜欢
    • 2020-04-27
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多