我遇到了Cookie问题。
基本上我试图将用户的会话ID存储为cookie,如下所示:
setcookie("CheckoutSessionID",session_id(),time()+3600);
这在我的网站上运行正常,cookie具有正确的值并且有效期足够长。但是,我的网站重定向到PayPal,因此用户可以确认付款。然后将用户重定向回我的站点。当用户被重定向回我的网站时,所有cookie变量都消失了。
同样,print_r($_COOKIE)
,var_dump($_COOKIE)
等没有值。这仅在被指向和来自PayPal之后发生。
有关为何发生这种情况的任何想法?
提前感谢所有的帮助,我很难过!
答案 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.