Cookie在重定向时被删除

时间:2012-08-04 04:21:08

标签: php cookies

我遇到了Cookie问题。

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

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

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

同样,print_r($_COOKIE)var_dump($_COOKIE)等没有值。这仅在被指向和来自PayPal之后发生。

有关为何发生这种情况的任何想法?

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

3 个答案:

答案 0 :(得分:4)

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

PHP sessions and session_start()

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

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

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

我首先使用cookie的全部原因是为了保存用户的会话ID,因为会话无法正常工作,所以基本上我刚刚创建了这样的返回URL:

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

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

感谢大家的帮助:)

答案 1 :(得分:2)

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

但是,一旦您将用户重定向到另一个外部网页/网站并再次返回到您的网页,那么您不应该在cookie变量中获取cookie因为(在您的情况下)用户从paypal paypal未提交cookie请求后,我们将返回您的网站。

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

答案 2 :(得分:0)

从Paypal重定向后,我也遇到了类似的问题Cookie。

我花了一段时间才找出问题所在。

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

Samesite=**"Lax"** // does not remove cookies after redirect from Paypal.