2012-09-16 57 views
5

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

这里是我的配置价值

$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领域,以适应长期USER_AGENT字符串。 可能是什么问题?我会为任何帮助,不胜感激

+0

请参阅http://amerkhalid.com/codeigniter-creating-a-new-session-with-each-page-load/ – Prasanth

+0

请让我们知道,如果@goldenparrot发布的链接帮助你了 – Tom

+0

@Tom链接帮助 – MrFoh

回答

3

请确保您有在/application/config/config.php正确域组在$config['cookie_domain']

1

你也应该在你的会话表来检查“USER_AGENT”的大小。在MacOS(Mountain lion,版本20.0)中,Firefox的用户代理报告了UA中超过60个字符,所以我得到了一些“varchar(40)”的问题。

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

+0

这也是我的问题 - 它让我困惑,为什么默认的'ci_session'表有这个非常愚蠢的设置。 –

0

我发布这个,希望它可以帮助其他人。我尝试了很多在多个网站上提到的建议,并在此工作了2天。没有解决方案的工作。

然后我决定检查我的cookie中显示的内容。我在config.php文件中设置了$config['sess_encrypt_cookie'] = FALSE;,以便我可以读取数据并删除所有旧的Cookie。我也将$config['sess_cookie_name']更改为网站名称。它最初是默认的'cisession'。突然间,它开始正常工作。我不知道这是否是我的旧饼干清除,或关闭加密或改变名称的差异,但我很高兴它终于工作。我猜可能是我的cookie损坏了。因为我已经看到网站为相同的设置提供完全不同的建议(例如,有人说leave ['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。

相关问题