【问题标题】:How to keep session data using Codeigniter and Tank Auth如何使用 Codeigniter 和 Tank Auth 保留会话数据
【发布时间】:2012-01-17 15:23:13
【问题描述】:

我正在为电子商务网站使用 Codeigniter 和 Tank Auth。我发现如果客户将商品放入购物车(使用内置在购物车类中的 Codeigniter),然后在网站上注册,则会话与他们的购物车一起丢失(我假设它会出于某种原因生成一个新会话保持相同的会话)。

以前有人遇到过这个问题吗?有没有我忽略的简单解决方案。

谢谢

【问题讨论】:

  • 赞成,因为我厌倦了看到网站这样做。

标签: codeigniter session tankauth


【解决方案1】:

就最近的代码而言,唯一删除空洞会话的地方是 logout() 函数 Tank_auth.php 第 118 行: https://github.com/ilkon/Tank-Auth/blob/master/application/libraries/Tank_auth.php#L118

Tank Auth 的示例用法在 activate()reset_email() 中使用了 logout() - 检查您的代码以了解这些方法。您还可以将 Tank Auth 注销功能更改为以下内容:

function logout($keep_session = false)
{
    $this->delete_autologin();

    // See http://codeigniter.com/forums/viewreply/662369/ as the reason for the next line
    $this->ci->session->set_userdata(array('user_id' => '', 'username' => '', 'status' => ''));

    if(!$keep_session)
        $this->ci->session->sess_destroy();
}

... 并像这样使用它:$this->tankauth->logout(true);

【讨论】:

  • 啊,是的,我完全错过了这个!完美的答案,附加代码也是一个很大的帮助。非常感谢!!
  • 进一步说明,userdata 的设置是否也应该在 IF 语句中?目前它将取消设置关键会话数据。
  • 事实上,我现在已经完全从 auth.php Line 310 link 中删除了注销功能。久经考验的效果很好。
  • 我已经尝试使用上面的代码,但是会话不工作,当我登录时它没有重定向到主页,而是保持在同一个登录页面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多