Codeigniter在每个页面加载时创建新会话

时间:2012-09-16 10:51:03

标签: php codeigniter

我使用codeigniter 2.1.0为客户开发和电子商务网站。 该网站已经运行了大约3个月,然后突然,登录没有坚持,会话数据没有设置。 我检查了数据库,发现每次加载页面时都会创建一个新会话。

这是我的配置值

$config['sess_cookie_name']     = 'myu';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = '_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 3600;

$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']      = "/";
$config['cookie_secure']    = FALSE;

我在会话表上编辑了user_agent字段以容纳long user_agent字符串。 可能是什么问题呢?我会很乐意提供任何帮助

3 个答案:

答案 0 :(得分:3)

确保/application/config/config.php位于$config['cookie_domain']

的域名设置正确

答案 1 :(得分:1)

您还应该检查会话表中“user_agent”的大小。我在“varchar(40)”中遇到了一些问题,因为MacOS(山狮,版本20.0)中Firefox的用户代理在您的UA中报告了超过60个字符。

将字段从“varchar(40)”更改为“varchar(255)”解决了我的问题。

答案 2 :(得分:0)

我发布这篇文章是为了帮助其他人。我尝试了多个网站上提到的许多建议,并在此工作了2天。没有一个解决方案有效。

然后我决定检查我的cookie中显示的内容。我在config.php文件中设置$config['sess_encrypt_cookie'] = FALSE;,以便我可以读取数据并删除所有旧cookie。我还将$config['sess_cookie_name']更改为网站名称。它最初是默认的'cisession'。突然间,它开始正常工作。我不知道是不是清除了我的旧cookie或关闭加密或更改了产生差异的名称,但我很高兴它终于正常工作了。我猜可能是我的cookie已损坏。由于我已经看到网站建议对相同设置提出完全不同的建议(例如,有人说保留['cookie_domain']为空,有人说在你的根域中添加(至少有2个句点),等等),我包括我的设置在config.php文件中:

$config['sess_cookie_name']     = 'easyeverydayenglish';
$config['sess_expiration']      = 14400;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

$config['cookie_prefix']    = "";
$config['cookie_domain']    = ".eee.loc";
$config['cookie_path']      = "/";
$config['cookie_secure']    = FALSE;

现在我的下一个问题是尝试让CI在goDaddy上运行。 Arghh。