【问题标题】:Codeigniter Sessions Swapped Between Users用户之间交换的 Codeigniter 会话
【发布时间】:2013-01-16 12:54:48
【问题描述】:

我在我的一个客户网站上遇到问题,似乎两个用户的会话正在交换。我正在使用 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。

今天,似乎有两个用户正在登录,他们每个人的标题中都有“欢迎 X”消息作为另一个人的名字。不幸的是,我只从我的客户那里得到这些信息,所以我无法在我的机器上调试或复制它,因为会话对我来说似乎工作正常(本地和在线)。

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

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

关于用户登录,但我不确定这是否是问题。

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

【问题讨论】:

  • 用户名或密码中有特殊字符吗?它可能会改变 MySQL SELECT 结果。
  • 用户名中除了下划线和点 (.) 之外没有其他特殊字符,通常出现在电子邮件地址中。我不确定密码,因为它在数据库中加密。我认为如果是这样,他们将根本无法登录,因为查询不会在数据库中找到任何匹配的记录。

标签: php codeigniter session


【解决方案1】:

这是一个奇怪的问题,放一个更长的加密密钥并加密您的 cookie,看看它们是否再次出现问题。

这些是我在许多网站上使用的设置,没有遇到过这个问题(加密密钥、加密 cookie 并在关闭时过期)。

$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;

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

$this->session->sess_destroy();

【讨论】:

  • 我也在使用相当长的加密密钥。不过,我会在 cookie 上添加加密。
  • 这可能是由于两个用户使用同一台计算机,当他们注销时,会话和 cookie 没有正确销毁。
  • 我不相信被混淆的两个用户使用的是同一台计算机,甚至根本没有关系。我正在等待客户的反馈,看看问题是否仍然存在。
  • 问题似乎没有再次出现。我有一种强烈的感觉,它来自:$this->session->sess_destroy(); (在登录之前创建新会话之前,我没有破坏会话)。希望它确实得到解决。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多