【问题标题】:Problems with Codeigniter's Native Session ClassCodeigniter 的本机会话类的问题
【发布时间】:2011-01-06 14:54:45
【问题描述】:

因此,由于 IE 和会话的一些问题,我将我的应用程序切换到本机会话类是 codeigniter。然而现在,这个会话类似乎很快就让人们退出了。我已经浏览了所有代码,但似乎找不到问题所在。这是本机会话类:http://ellislab.com/codeigniter/wiki/Native_session/

我所有的配置变量都是默认设置。我想知道这是 Native Session 的错还是我自己的错。我确实在另一个脚本中使用了 bool var,用于确定用户是否已登录。只是想我会把它扔在那里。

顺便说一句,Codeigniter 1.7.3,PHP 5

【问题讨论】:

标签: php internet-explorer session codeigniter


【解决方案1】:

CodeIgniters 会话与 PHP 的会话无关。他们每(我认为)5 分钟刷新一次,而不会失去与用户的关联。这是一项防止会话窃取的安全功能。要让会话更长时间可用,您需要在配置中自定义超时时间。

$config['sess_expiration']        = 7200;
$config['sess_time_to_update']    = $config['sess_expiration'];

现在 CI 更新其会话之前的时间与常规会话到期时间相同。

【讨论】:

    【解决方案2】:

    正如 Colossos 博士所说,重写是可以的

    $config['sess_expiration'] = 7200;

    但“更新时间”应保持较低的值。该参数设置session id再生的频率,用于避免session-stealing,不表示session过期。

    我记得关于 IE 和 CI 会话的唯一问题是 CI 使用 undescore 作为 coockie 会话的名称,这是不喜欢 IE 的东西,所以如果你在会话配置文件中更改名称问题消失了。

    【讨论】:

    • 正如我所说的,所有变量都设置为默认值,包括会话到期。会议持续时间不超过 5 分钟,通常更短。
    • 你反驳了这个问题!太好了,可能我有新的答案;)不管你做什么,IE 似乎都不会杀死标识会话的 cookie。它有时会发生,并且仅在 IE 中发生。不确定存储会话数据会如何影响(和解决)问题,但 IE 问题的部分解决方法是使用不同的 cookie,该 cookie 基于可以猜测但经常更改的内容,例如日期。
    • 有趣。这是 IE 安全问题吗?为什么这个问题没有更频繁地发生?
    【解决方案3】:

    所以答案是“只使用数据库”。我最终只是使用 CI 将数据库用于会话数据的能力。 http://ellislab.com/codeigniter/user_guide/libraries/sessions.html 请参阅标题为“将会话数据保存到数据库”的部分

    【讨论】:

    • 哦,我也不明白为什么only IE 会在常规会话中执行此操作。哦,我猜。
    • 对不起 Tyler,哪个正则表达式?我迷路了。你能稍微解释一下吗?
    • 哈哈不是正则表达式正则会话,就像CI自带的默认Session引擎一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多