Chrome切换不同的设备视图会破坏会话

lot*_*fio 17 php google-chrome

我正在使用PHP作为后端技术的网站admin cp,同时我正在修复一些响应问题.

所以我登录到管理面板但是当我切换不同的设备,如Galaxy,Nexus Iphone甚至响应模式来测试响应的外观或我已经完成的修复,我发现自己已经注销并重定向到登录页面,我也看到了登录前不应出现的内容,例如管理员菜单,但是无法访问,换句话说,它已登录一半,一半不登录.

兑现未被禁用.

会话ID是我能看到的相同.

我真的无法理解它!

这在浏览器中是否正常,这意味着每个设备都独立于整个浏览器?

或者我做错了什么?

lot*_*fio 10

最后,经过几个小时的审查我的代码和调试每一件事,我想出了一个问题的解决方案:

  • 我在设备彼此独立的问题中的假设非常正确,因为每个设备都有不同的设备 HTTP_USER_AGENT

你可以这样试试:

echo $_SERVER['HTTP_USER_AGENT'];
Run Code Online (Sandbox Code Playgroud)

在浏览器上切换不同的设备并查看结果.

所以,作为会议的最佳实践基础上的堆栈溢出和许多其他资源是一个很好的做法,以保存$_SERVER['HTTP_USER_AGENT']在会话中,后来在登录,这意味着登录的用户后检查会话完全用户从浏览器来

这就是我正在做的事情,我正在检查用户登录会话和用户代理会话

这就是造成问题的原因所以当我切换不同的设备时,HTTP_USER_AGENT会发生变化,因此会话不匹配,因此我会自动注销.

  • 我刚刚看到这个问题,并且会说很明显你做用户代理验证`$ this-> session-> set('agent',$ this-> custom-> userAgent());`和chromes设备视图更改它是您设置的设备的用户代理... (2认同)