Php 代理背后的Codeigniter确认会话

Php 代理背后的Codeigniter确认会话,php,codeigniter,session,Php,Codeigniter,Session,我们有一个刚刚上线的web应用程序。由于这在多个公司网络上使用,出现了一个特殊的问题 用户可以登录系统,但公司网络后面的用户会间歇性地登录/查看其他用户的个人资料。从本质上说,这些会议正在发生冲突 以下是服务器上的当前设置: $config['sess_cookie_name'] = 'cisession'; $config['sess_expiration'] = 72000; $config['sess_expire_on_close'] = FALSE; $config[

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

用户可以登录系统,但公司网络后面的用户会间歇性地登录/查看其他用户的个人资料。从本质上说,这些会议正在发生冲突

以下是服务器上的当前设置:

$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;
我们在amazon上的灯堆上的负载平衡器后面


我们在这件事上真的很紧张,欢迎任何指点。谢谢

我不知道这是否能为您解决问题,但我遇到过两个客户机的类似问题,他们使用的代理限制了HTTP头的大小。这通常不会是一个问题,但是Codeigniters会话处理程序中有一个bug,它为每个会话变量编写一个新的
cookies:
条目,而不是一次性完成所有任务。这会导致HTTP头变得臃肿,如果您设置了大量会话变量,可能会在某些网络上导致问题

我的建议是为Firefox下载
liveHTTP头文件
,并在使用会话的页面上检查站点的头文件。如果您发现
cookies:
的多个条目,则可能会导致您的问题

要解决这个问题,我建议您使用自己的会话库。试试看会发生什么。它帮我修好了


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

我不知道这是否能帮你解决问题,但我遇到过两个客户机的类似问题,他们的代理限制了HTTP头的大小。这通常不会是一个问题,但是Codeigniters会话处理程序中有一个bug,它为每个会话变量编写一个新的
cookies:
条目,而不是一次性完成所有任务。这会导致HTTP头变得臃肿,如果您设置了大量会话变量,可能会在某些网络上导致问题

我的建议是为Firefox下载
liveHTTP头文件
,并在使用会话的页面上检查站点的头文件。如果您发现
cookies:
的多个条目,则可能会导致您的问题

要解决这个问题,我建议您使用自己的会话库。试试看会发生什么。它帮我修好了


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

您可能想试着询问,并包括有关拓扑结构的详细信息(代理等)。这听起来像是网络层的问题,而不是程序性问题。一个关于粘性会话的快速谷歌搜索出现了。基本上,如果你使用的是一个有多台服务器支持的负载平衡器,就必须有一个“粘性”机制到发起会话的服务器的会话。该问题发生在至少4个此类网络上,因此我将在这一点上排除该问题。同时,粘性会话也会起作用,以便相同的用户在amazon上坚持使用相同的服务器实例。请您花些时间,但我认为这与应用程序和会话有关处理这会导致此问题。是的,如果会话不存在粘性,则可以理解这是跨多个网络发生的;没有任何信息告诉平衡器将请求发送到哪个服务器。因此,用户1在服务器1上启动会话;用户2在服务器2上启动会话;用户1的下一个请求转到服务器2并获取用户2的请求Session。如果您尚未对codeigniter会话进行任何其他修改,codeigniter不是问题所在,否则每个使用CI的人都会出现此问题。您可能希望尝试询问并包括拓扑结构的详细信息(代理等)双方都有。这听起来像是网络层的问题,而不是一个编程问题。一个关于粘性会话的快速谷歌搜索出现了。基本上,如果你使用的是一个有多台服务器支持的负载平衡器,那么必须有一个“粘性”机制到发起会话的服务器的会话。该问题发生在至少4个此类网络上,因此我将在这一点上排除该问题。同时,粘性会话也会起作用,以便相同的用户在amazon上坚持使用相同的服务器实例。请您花些时间,但我认为这与应用程序和会话有关处理这会导致此问题。是的,如果会话不存在粘性,则可以理解这是跨多个网络发生的;没有任何信息告诉平衡器将请求发送到哪个服务器。因此,用户1在服务器1上启动会话;用户2在服务器2上启动会话;用户1的下一个请求转到服务器2并获取用户2的请求如果您没有对codeigniter会话进行任何其他修改,codeigniter不是问题所在,否则每个使用CI的人都会出现此问题。