2

我有 cookie 的问题。

基本上我正在尝试将用户的会话 ID 存储为 cookie,如下所示:

 setcookie("CheckoutSessionID",session_id(),time()+3600);

这在我的网站上运行良好,cookie 具有正确的值并且有效时间足够长。但是,我的网站会重定向到 PayPal,因此用户可以确认付款。然后用户被重定向回我的网站。当用户被重定向回我的网站时,所有 cookie 变量都消失了。

print_r($_COOKIE)var_dump($_COOKIE)等没有值。这仅在被定向到 PayPal 后才会发生。

关于为什么会发生这种情况的任何想法?

提前感谢所有帮助,我很难过!

4

3 回答 3

4

好的,我一直在深入挖掘并意识到我之前的一个问题是相关的:

PHP 会话和 session_start()

基本上我遇到了问题,因为当我去 PayPal 并返回时,PHP 会话被删除了。但是,我相信这实际上是由于会话 COOKIE 被破坏,而不是整个会话造成的。

我还在这里找到了这个主题:Do PHP session get lost when directing to a payment gateway?

有人给出的答案建议使用带有返回 URL 的 GET 请求来发回数据,而不是使用 cookie 或会话。

我首先使用 cookie 的全部原因是保存用户的会话 ID,因为会话无法正常工作,所以基本上我只是将返回 URL 设置为如下所示:

mydomain.co.uk/mypage.php?SessionID=[session ID goes here] 然后获取它然后将用户的会话ID设置为它。

排序!现在......我的意思是,由于 cookie/会话无法正常工作,我可能最终会碰到另一堵砖墙。

谢谢大家的帮助:)

于 2012-08-04T05:27:11.637 回答
2

实际上无论发生什么(cookie 是空的),逻辑上都是正确的。当您提交页面/发出请求时,浏览器会cookie从客户端计算机发送请求,以便您可以cookiecookie变量中找到 。

但是,一旦您将用户重定向到另一个外部页面/站点并再次返回到您的页面,那么您不应该在变量cookie中获取 ,cookie因为(在您的情况下)当用户从与请求。paypalpaypalcookie

在这种情况下,您可以在将用户重定向到之前将数据保存在数据库中,paypal并且一旦用户返回您的站点,您就可以从数据库中检索该数据。

于 2012-08-04T05:16:16.617 回答
0

从 Paypal 重定向后,我得到了类似的问题 cookie 被删除。

我花了一段时间才弄清楚哪里出了问题。

Samesite=**"Strict"** // Removes cookies after redirect from Paypal.

Samesite=**"Lax"** // does not remove cookies after redirect from Paypal. 
于 2020-07-27T18:40:11.320 回答