- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用 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/
我是一名优秀的程序员,十分优秀!