我正在使用 PHP 作为后端技术开发网站管理 cp,同时我正在解决一些响应问题。
所以我登录到管理面板但是当我切换不同的设备,如 Galaxy、Nexus Iphone 或什至响应模式来测试响应外观或我所做的修复时,我发现自己已注销并重定向到登录页面和我还看到了登录前不应出现的内容,例如管理菜单,但无法访问,换句话说,它一半已登录,一半未登录。
兑现未被禁用。
session id 和我看到的一样
我真的无法理解它!
这在浏览器中是否正常,意味着每个设备都独立于整个浏览器?
或者我做错了什么?
最佳答案
最后,经过几个小时的审查我的代码和调试每一件事情,我想出了一个解决我的问题的方法:
- 我在问题中的假设是设备是独立的
彼此之间是完全正确的,因为每个设备都有不同的
HTTP_USER_AGENT
你可以这样试试:
echo $_SERVER['HTTP_USER_AGENT'];
在浏览器上切换不同的设备并查看结果。
至于基于堆栈溢出和许多其他资源的 session 最佳实践,最好将 $_SERVER['HTTP_USER_AGENT']
保存在 session 中,稍后在登录后检查 session 表示登录用户正是来自该浏览器的用户
这就是我正在做的,我正在检查用户登录 session 和用户代理 session
这就是导致问题的原因,所以当我切换不同的设备时,HTTP_USER_AGENT
发生更改,因此 session 不匹配,因此我自动注销。
关于php - Chrome 切换不同的设备 View 会破坏 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532678/