首页 > 解决方案 > PHP在重定向时丢失PHPSESSID cookie中的会话ID

问题描述

嘿伙计们,我正在开发一个Codeigniter 3.1.11与之集成的项目,Sentinel 2.0.8但我遇到了一个我无法解决的问题!

每当我在回调中重定向到外部页面(支付网关)时,randomly我就失去了会话。我正在调试,我意识到已经在服务器上创建了一个新会话,而前一个会话已经存在,我提到新会话设置在我的 PHPSESSID cookie 上。PHPSESSID如果我将cookie的值更改为前一个,它会再次显示登录。

我的问题是为什么它会在前一个会话存在时创建一个新会话,以及为什么它不重新加载前一个会话。这是从支付网关返回时调用的代码部分:

empty(session_id()) ? session_start() : '';

我正在运行LEMP Lando environment.

标签: phpnginxsessioncookiescodeigniter-3

解决方案


好的,我发现了问题,由于版本 80+ 更新,这实际上只发生在 Google Chrome 中。Google 更新了 SameSite cookie 的设置,这在我的情况下是支付网关的第三部分(跨域)的回调中导致了此问题。

为了能够解决这个问题,有基于 PHP 版本和您的网络服务器的可用解决方案。

这是 PHP 的示例: https ://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md

希望这可以帮助!因为它让我失去了三天的时间!


推荐阅读