Codeigniter代理后面的冲突会话

时间:2013-09-13 13:38:23

标签: php codeigniter session

我们有一个刚刚上线的网络应用程序。由于这在几个公司网络中使用,因此出现了一个特殊的问题。

用户可以登录系统,但公司网络后面的用户会间歇性地登录/查看其他用户个人资料。会议本质上是相互冲突的。

这些是服务器上的当前设置:

$config['sess_cookie_name']     = 'cisession';
$config['sess_expiration']      = 72000;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = FALSE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

我们在亚马逊背后的LAMP堆栈上的负载平衡器上。

我们真的很喜欢这个,任何指针都欢迎。谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道这是否会为您解决这个问题,但我遇到了两个客户端类似的问题,这两个客户端是在限制HTTP标头大小的代理之后。这通常不是问题,但Codeigniters会话处理程序中存在错误,它为每个会话变量写入一个新的cookies:条目,而不是一次性完成所有这些。如果您设置了大量会话变量,这会导致HTTP标头变得臃肿并导致某些网络出现问题。

我的建议是为Firefox下载Live HTTP Headers并在使用该会话的页面上检查您网站的标题。如果您找到cookies:的多个条目,则可能会导致您的问题。

要解决此问题,我建议您使用自己的会话库。试试Dariusz Debowczyk's Session Class,看看会发生什么。它为我修好了。

另一种选择是联系网络管理员以检查他们正在使用哪种代理(一些旧版本的squid代理给我带来了codeigniters会话的问题),以及他们是否对HTTP头的大小设置了限制。 / p>