2017-08-29 37 views
0

我正在創建一個即將完成的付款系統,唯一剩下的部分就是刪除所有用於交易的cookie。使用IPN完成PayPal付款後刪除cookie

現在我可以刪除所有的cookie,如果我添加一個刪除功能到我的網站頁面之一,並將其​​設置爲刷新,這可以工作,但是,但要求用戶返回到該頁面開始,一些用戶可能一旦使用貝寶進行支付關閉瀏覽器,所以下次他們打開網頁時,cookies仍然有效。

我試圖刪除在PayPal使用它與網頁進行通信的IPN文件中的cookie,但我似乎無法刪除它,因爲我不能讓頁面刷新,有沒有另一種方法刪除cookie?

PHP

foreach ($_COOKIE as $key => $value){ 
    setcookie($key, $value, time()-(100000 * 60), '/'); 
} 
if(count($_COOKIE) !=0){ 
    // I also tried this method, refreshing the IPN file but it didnt work. 
    header("Refresh:0"); 
} 

回答

1

你的方法是錯誤的。您應該跟蹤數據庫中的交易,而不是Cookie。 Cookies可以用於會話。

然後,您可以在收到PayPal的付款確認後,通過您的IPN頁面關閉數據庫中的交易。

換句話說,IPN頁面被PayPal調用,永遠不會看到客戶瀏覽器,因此無法刪除那裏的cookie。

+0

嗯我明白了,我和數據庫沒有任何關係,但它只有客戶選擇購買的商品數量和價格的信息。這些信息將不會存儲到數據庫中。 – Luke

+0

是的,我瞭解,但除非您保護您的Cookie,否則客戶可以更改產品的價格,您需要嗎?因此,將會話存儲在會話中,並將會話ID發送到PayPal,以便在IPN頁面上接收並操作會話或使用數據庫。後者是首選的方法。 –

+0

謝謝。是的,我知道客戶可以改變價格,一旦IPN被調用,我有一個函數可以檢查來自數據庫的cookie的價格。我想我必須在貝寶將用戶重定向到我的網頁時刪除這些cookie,我只是覺得很煩人,因爲如果客戶決定在重定向之前關閉瀏覽器,下次他們打開網頁時Cookie仍然存在。即使我重新編程代碼以將價格連接到數據庫,我仍然希望爲用戶選擇的項目總數設置一個cookie。 – Luke

0

setcookie() PHP手冊評論部分:

http://php.net/manual/en/function.setcookie.php#109173

想刪除一個cookie?很多人都這麼做: setcookie('name','content',time() - 3600);

但是,當客戶的時間錯誤時,爲什麼你會變得如此複雜並且冒險不起作用呢?爲什麼隨着時間擺弄();

下面是取消設置cookie的最簡單方法: setcookie('name','content',1);

就是這樣。

+0

OP詢問如何避免重定向,而不是如何刪除cookie。 – DanFromGermany

+0

我知道這種方法,我刪除cookie的方式確實有效,不管效率是否低下,現在都沒有關係。我想知道的是如何讓這個函數無需刷新頁面而工作,因爲IPN文件不會刷新。 – Luke