2012-08-04 101 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之前將數據保存在數據庫中,並且一旦用戶回到您的站點,您可以從數據庫中檢索該數據。