首页 文章

Codeigniter会话在用户之间交换

提问于
浏览
0

我在我的一个客户的网站上遇到了一个问题,它似乎正在交换两个用户的会话 . 我正在使用CodeIgniter并具有以下配置:

$config['sess_cookie_name']     = 'ci_session';
$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']  = 300;

昨天我遇到了一个问题,其中一个用户在每个页面上重新生成了会话 . 我增加了会话表中User-Agent数据库字段的大小,并将上面的match_ip切换为TRUE,作为额外的预防措施 .

今天,似乎有两个用户正在登录,并且他们每个人在 Headers 中都有“欢迎X”消息作为另一个人的名字 . 不幸的是,我只从我的客户端获取此信息,因此我无法调试问题或在我的机器上复制它,因为会话似乎对我(本地和在线)工作正常 .

有没有人对我如何进一步调试,了解我的情况或问题可能有任何建议或见解?我尝试添加:

$this->session->sess_destroy();
$this->session->sess_create();

关于用户日志记录,但我不确定这是否可能是问题 .

我当然也仔细检查过我的实际登录代码没有任何问题...但是,它只是从POST检索电子邮件密码并在数据库中找到匹配的记录,这是常用的程序 .

1 回答

  • 0

    那么这是一个奇怪的问题, put up a longer encryption key and encrypt your cookies 并看看它们是否再次出现问题 .

    这些是我在许多网站上使用的设置,并且没有遇到此问题( Encryption key, encrypting cookie and expire on close ) .

    $config['encryption_key'] = 'dkfhlgsugT&(657865876t0967(*)&^)(*&*(&$^&%#%^#_)(+JKBVKHJFDC^*%VR^C@%C^';
    
    $config['sess_cookie_name']     = 'ci_session';
    $config['sess_expiration']      = 7200;
    $config['sess_expire_on_close'] = TRUE;
    $config['sess_encrypt_cookie']  = TRUE;
    $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;
    

    并确保您在用户 logout page 和登录页面(如您所述)销毁您的会话:

    $this->session->sess_destroy();
    

相关问题