CodeIgniter会话类在Chrome中不工作

CodeIgniter会话类在Chrome中不工作,codeigniter,session,google-chrome,cookies,Codeigniter,Session,Google Chrome,Cookies,我在codeigniter项目中创建了一个登录系统,它在Firefox中运行良好,但在Chrome中不起作用,数据获取和会话设置,但当代码将控制重定向到管理/仪表板时,我们会再次检查会话数据。如果会话数据不存在,则代码将重定向用户再次登录。。。。。。。。。。。。下面是我的代码,我不知道codeigniter中的会话/cookies有什么问题 $data = array( 'user_id' => $user->id,

我在codeigniter项目中创建了一个登录系统,它在Firefox中运行良好,但在Chrome中不起作用,数据获取和会话设置,但当代码将控制重定向到管理/仪表板时,我们会再次检查会话数据。如果会话数据不存在,则代码将重定向用户再次登录。。。。。。。。。。。。下面是我的代码,我不知道codeigniter中的会话/cookies有什么问题

        $data = array(
             'user_id' => $user->id,
             'name' => $user->name,
             'user_type' => $user->type,
             'username' => $user->username,
             'is_logged_in' => true
        );

        $this->session->set_userdata($data);
        //echo "user ".$this->session->userdata("username"); exit;
        redirect("admin/dashboard", "location"); 

我已经搜索了很多,但没有人在这种情况下工作,就像一个改变“cookie\u domain”在配置文件中,但没有发生任何事情。…

您是否检查了会话是否存储了较长时间,并且没有提前销毁会话。或者可能是由于codeigniter中没有此类代码,因此无法在Firefox上工作,也无法在chrome上工作,这与chrome设置接受会话和Cookie数据有关。另外,请确保您是自动启动的正在加载“会话”库

我也遇到了这种情况,通过将会话到期时间增加到一天来解决它

更新

为什么它通过延长会话到期时间来工作?
出现此问题的原因是用户和Web服务器位置的时区不同,例如,我住在巴基斯坦,比美国时区早10小时,而我的服务器在美国。我在巴基斯坦时间2012年10月17日14:00请求页面。在美国的时间是2012年10月17日4:00,因为webserver在美国,会话到期时间设置为2小时。服务器发送的cookie设置为2012年10月17日6:00到期。现在,浏览器与您的本地pc时间进行交互,时间为2012年10月17日14:00,因此它会删除cookie或根据您的请求刷新cookie。因此,最好将会话到期时间设置为1天,因为新西兰和美国之间最大的时区差异是17小时(我不确定是否存在差异,可能是我错了)。因此,您的cookie至少可以保持7个小时的活动状态,这是一个完美的答案,因为我遇到了同样的问题,我通过更改

$config['sess_expiration'] = 8600;
这是24小时内的秒数,是2小时内的秒数

$config['sess_expiration'] = 7200;
我住在巴基斯坦,使用美国的服务器,所以这个问题突然出现


谢谢Shayan,这帮了大忙。

为了增加我的经验,我正在使用Codeigniter 2.1.4

问题:Chrome上的会话持续时间不超过几分钟,或者在执行ajax请求时被注销。 我尝试了几种方法:(更改sess\u cookie\u名称,延长sess\u过期时间)

我刚刚发现将sess_encrypt_cookie设置为FALSE修复了chrome注销问题

$config['sess\u encrypt\u cookie']=FALSE

不知道为什么,可能是chrome上的cookie长度问题(据我所知,加密增加了很多字符串长度)

我知道加密增加了额外的安全性,但据我所知,存储在cookie中的数据并不敏感


希望有帮助

我在中遇到了相同的问题,并最终通过使用最新版本的Codeigniter(版本2.1.4)中的sql结构更新sessions数据库表来解决该问题

    CREATE TABLE IF NOT EXISTS  `ci_sessions` (
         session_id varchar(40) DEFAULT '0' NOT NULL,
         ip_address varchar(45) DEFAULT '0' NOT NULL,
         user_agent varchar(120) NOT NULL,
         last_activity int(10) unsigned DEFAULT 0 NOT NULL,
         user_data text NOT NULL,
         PRIMARY KEY (session_id),
         KEY `last_activity_idx` (`last_activity`)
    );

还请注意,如果在config/database.php中配置了多个数据库,则使用默认配置的数据库的会话表的会话表。

我在config.php中将sess_match_useragent参数更改为false

$config['sess_match_useragent'] = FALSE;

google chrome的问题也解决了。

解决了,CodeIgniter出现了一些问题。如果Cookie的指定域是localhost,我在hosts文件中设置了一个带有真实域名结构的假域,它可以工作

我知道这是一个迟来的答案,但如果您正在寻找一个好的解决方案,它是: 将此代码用作注销代码:

$this->session->sess_destroy();

这将确保删除会话“ci_session”,这是您无法保存新会话的主要原因,希望它有助于检查您的服务器php版本,如果它的7.x更改为5.6,它对我有效

我也有同样的问题,我可以通过更改
$config['sess_time_to_update']=3的值来解决问题。

我也遇到了同样的问题。但我通过在$config['cookie\u path']设置适当的值来修复它。如果您的项目从域的子文件夹运行。然后请将子文件夹名称设置为$config['cookie_path']的值


假设您的项目url:then$config['cookie\u path']应该像$config['cookie\u path']='/demo1/'

您说过在FF中可以。这让我认为你的chrome没有存储cookies。检查它,但我的chrome商店cookie用于其他网站,如facebook等。@W.Kristianto,我已经检查了所有方法,如更改cookie\u域名等,但什么都没有发生……是的,我已经自动加载了我的会话库,除了chrome之外一切都正常……是的,它现在工作了,过期时间增加到一天……)但是如果没有这个,你会怎么做呢?无论如何,谢谢。当您的时区与web主机时区不同时,就会出现此问题,因此1天是安全的。@Shayanhusaini但当我们使用localhost时,为什么要面对此问题problem@kushalsuthar我已经回答了会议中最常见的问题。浏览器设置有多种可能性