2012-08-04 53 views
1

我有一个Cookie问题。在重定向时正在删除Cookie

基本上我想用户的会话ID存储在cookie中,像这样:

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

这工作在我的网站很好,该cookie具有正确的价值和有效的时间足够长。不过,我的网站会重定向到PayPal,以便用户确认付款。该用户然后被重定向回我的网站。当用户重定向到我的网站时,所有Cookie变量都消失了。

如在print_r($_COOKIE)var_dump($_COOKIE)等没有值。这只发生在从PayPal定向和从PayPal定向之后。

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

在此先感谢您的帮助,我很难过!

+0

'session_id()'返回什么函数? – 2012-08-04 04:33:12

+0

和回声时,使用'echo $ _COOKIE [“CheckoutSessionId”]' – 2012-08-04 04:34:31

+0

session_id()返回正确的会话ID,我可以在我的所有页面上输出$ _COOKIE [“CheckoutSessionID”]我已经设置了cookie。 但是,只要用户从PayPal重定向,所有的cookies都消失了。 – 2012-08-04 04:34:33

回答

4

好吧,我一直在挖掘相当深,意识到我的前面一个问题是有关:

PHP sessions and session_start()

基本上我有问题,因为当我去贝宝和背部PHP会议分别被删除。不过,我认为这实际上是由于COOKIE会议被毁,而不是整个会议造成的。

这里我也发现了这个话题:有人给Do PHP sessions get lost when directing to a payment gateway?

答案建议使用GET请求与返回URL发送回数据,而不是使用cookie或会话。

我用的是首先一个cookie的全部原因是为了节省用户的会话ID,因为会话没有正常工作,所以基本上我只是做了我返回的URL是这样的:

mydomain.co.uk/mypage.php?SessionID=[session ID在这里],然后获得它,然后设置用户的会话ID。

Sorted!目前...我的意思是我可能最终会因为饼干/会话不能正常工作而撞到另一堵砖墙。

感谢大家的帮助:)

+0

+1,感谢您的联系。 – 2012-08-04 19:11:41

2

其实无论发生什么事情(cookie是空的),逻辑上是正确的。当您提交页面/发出请求时,浏览器会将客户计算机上的cookie与请求一起发送,以便您可以在cookie变量中找到cookie

但是,一旦你将用户重定向到另一个外部网页/网站,并再次回到你的页面,那么你不应该在cookie变量得到cookie,因为(在你的情况下),当用户从又回到了你的网站paypalpaypal未提交请求中的cookie

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