Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter在每次页面加载时创建新会话_Php_Codeigniter - Fatal编程技术网

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

Php Codeigniter在每次页面加载时创建新会话,php,codeigniter,Php,Codeigniter,我使用codeigniter 2.1.0为客户开发了一个电子商务网站。 该网站已经运行了大约3个月,然后突然,登录没有坚持,会话数据没有被设置。 我检查了数据库,发现每次加载页面时都会创建一个新会话 这是我的配置值 $config['sess_cookie_name'] = 'myu'; $config['sess_expiration'] = 7200; $config['sess_expire_on_close'] = FALSE; $config['sess_encryp

我使用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\u agent字段,以适应长的user\u agent字符串。
有什么问题吗?我非常乐意提供任何帮助

确保您在
/application/config/config.php
$config['cookie\u domain']
中设置了正确的域,您还应该检查会话表中“user\u agent”的大小。我对“varchar(40)”有一些问题,因为MacOS(mountain lion,版本20.0)中Firefox的用户代理报告的UA中有60多个字符


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

我发布这篇文章是希望它能帮助其他人。我在多个网站上尝试了许多建议,并为此工作了2天。所有的解决方案都不起作用

然后我决定检查一下我的饼干里有什么。我将
$config['sess\u encrypt\u cookie']=FALSE,以便我可以读取数据并删除所有旧cookie。我还将
$config['sess\u cookie\u name']
更改为网站名称。它最初是默认的“cisession”。突然,它开始正常工作。我不知道是不是清除了我的旧cookies,或者关闭了加密,或者更改了名称,造成了不同,但我很高兴它终于起作用了。我猜我的饼干可能坏了。由于我看到一些网站对相同的设置提出了完全不同的建议(例如,有人说将['cookie_domain']留空,有人说在根域中添加(至少有两个句点),等等),我将我的设置包括在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上工作。啊。

请查看@goldenparrot发布的链接是否对您有所帮助,请告知我们out@Tom-如果您想根据上面链接的内容编写答案,请这样做。但是,让答案自己站起来,不需要我们访问站点来查看解决方案。这也是我的问题-它让我困惑为什么默认的
ci_会话
表有这种相当愚蠢的设置。