gpt4 book ai didi

php - 为什么我的 PHP session 快死了?为什么我不能恢复它们?

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:15 24 4
gpt4 key购买 nike

我有一个使用 PHP 和 PayPal API 的应用程序。获得付款的基本方法是,您对 PayPal 进行网络服务调用以获取 token ,然后使用该 token 将浏览器重定向到 PayPal 以供用户付款。确认付款详细信息后,PayPal 会重定向回您最初在服务调用中设置的 URL。

这一切都有效,数百万人每天都在使用它,等等。

奇怪的是,当 PayPal 重定向回来时,PHP session 消失了。这是一个well-documented issue .

第一个问题:为什么会这样?两个页面都在同一个域中,都使用 HTTPS。该 session 适用于所有请求,直到 PayPal 重定向回来。

链接的论坛线程提出了一种解决方法,即在 PayPal 请求中保留 session ID,然后稍后检索它并恢复 session 。很好,但它似乎不起作用。

我可以添加一些日志语句:

log(session_id());

各种重定向前后。当从 PayPal 回来时,我记录了更多。

log("session id is " . session_id());
$session_id = get_session_id_from_paypal();
log("setting it back to " . $session_id);
session_id($session_id);
session_start();
log("session id is now " . session_id());

结果完全不是我所期望的:

session_id is fc8f459a186a3f4695ff9ac71b563825
setting it back to 82460dcf8c8ddd538466e7cb89712e72
session_id is now 360ba3fd99d233e0735397278d2b2e55

第二个问题:为什么session id和我设置的完全不一样?我究竟做错了什么?或者,至少,为什么 session 变量都没有返回?

最佳答案

只是一个想法...

您是否为您的主机设置了 session.referer_check?默认值为空字符串,但它可能已被更改...当页面从 PayPal“返回”时,php 将丢弃 session 信息。

您可以使用 phpinfo() 检查 session.referer_check

关于php - 为什么我的 PHP session 快死了?为什么我不能恢复它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/183932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com