经过一天在互联网上的广泛研究,我仍然无法弄清楚这一点。发生的事情是 cookie 中的 PHPSESSID 没有从一个页面持续到另一个页面。
这发生在特定位置的一个互联网连接下的计算机中。我已经测试了其他几台位于其他地方的机器,一切正常。我检查了 session_start,子域没有问题。
我希望有人可以帮助我。
检查事项:
这些计算机上的时间(和时区!)是否设置正确?如果设置不正确,他们可能会过早地丢弃会话 cookie(甚至可能立即丢弃)。
计算机上是否安装了任何奇怪的安全或“隐私”软件?如果可能,请检查这些机器上的其他浏览器下问题是否仍然存在。
这些计算机是否在任何类型的 Web 代理后面?如果是这样,它可能会干扰 cookie。
在我用自己的电脑验证了这件事发生在这个地方之后,我意识到当我输入一些 URL 时,它们在中间发生了某种变化,例如http://www.medicmanager.com.ar/cloud/santiago/ charisma/js/jquery.cookie.js变成了http://www.medicmanager.com.ar/cloud/santiago/charisma/js/jquery.ckiooe.js,当然是 404。
我将 ISP 连接更改为另一个,它开始工作,所以我打电话给 ISP,他们告诉我他们已经遇到这个问题 2 天,更改 URL 并弄乱了 cookie。
谢谢大家的回答,如果有人有疑问,我把它留在这里。是的,可能是你的ISP,很奇怪。
要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()。- PHP 文档
此外,您可能需要检查您的 php.ini 是否已正确配置以存储会话 cookie。或者每次在会话开始之前加载页面时调用 session_set_cookie_params() ,以便正确配置会话 cookie 的文件夹、域、持续时间等。
设置 php.ini 文件中定义的 cookie 参数。此功能的效果仅持续脚本的持续时间。因此,您需要在调用 session_start() 之前为每个请求调用 session_set_cookie_params()。
此函数更新相应 PHP ini 配置键的运行时 ini 值,可以使用 ini_get() 检索。
将 cookie 生命周期设置为 0 意味着它将立即过期,请尝试将其设置为另一个值,例如 2592000 - 以秒为单位的 30 天。编辑:我的意思是time() + 2592000