PHP 重定向时丢失 PHPSESSID cookie 中的会话 ID

Bla*_*ord 1 php cookies session nginx codeigniter-3

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

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

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

empty(session_id()) ? session_start() : '';
Run Code Online (Sandbox Code Playgroud)

我正在运行一个LEMP Lando environment.

Bla*_*ord 5

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

为了能够修复此问题,可以根据 PHP 版本和您的网络服务器提供可用的解决方案。

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

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