6

我使用 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 字段以容纳较长的 user_agent 字符串。可能是什么问题呢?我会很感激任何帮助

4

3 回答 3

3

确保您在以下位置设置了正确的/application/config/config.php$config['cookie_domain']

于 2012-09-17T18:43:49.240 回答
1

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

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

于 2013-05-13T19:42:04.060 回答
0

我发布这个是希望它可以帮助其他人。我已经尝试了多个站点上提到的许多建议,并为此工作了 2 天。没有一个解决方案奏效。

然后我决定检查我的 cookie 中显示的内容。我$config['sess_encrypt_cookie'] = FALSE;在 config.php 文件中进行了设置,以便我可以读取数据并删除所有旧 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 上工作。啊。

于 2014-06-25T17:11:12.553 回答