2014-09-22 60 views
1

在我的網站上有評論框。爲什麼php不能刪除JavaScript設置的cookie?

發佈評論是由JavaScript處理,JS數據發佈到PHP腳本和PHP確實只有當用戶登錄時,如果用戶的心不是在那麼PHP給not_loggedin響應接收它的js後登錄該數據庫相關的東西,並顯示確認顯示了自舉彈出框與鏈接到登錄頁面。

因此,如果用戶沒有登錄,那麼javascript會將輸入的註釋存儲在cookie中,以便在登錄後用戶不必重新輸入註釋。像這樣

document.cookie = id + "=" + input_text + "; "; 

,並在註釋文本域登錄後通過讀取它具有存儲註釋文本餅乾填充..

一切都交給這是工作完美,但是在PHP中插入評論後,我很試圖刪除的cookie這樣,

setcookie($id, "", time()-3600); 
print_r($_COOKIE); 
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>'); 

,但它仍然不刪除的cookie,當我重新加載頁面,註釋textarea的盒子我填充是從餅乾看了一遍先前enetered評論,

我該如何解決這個問題?

我甚至試過顯示由JS存儲在PHP中的cookie,艾克這個

//insert comment in db 
//setcookie($id, "", time()-3600); 
print_r($_COOKIE); 
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>'); 

但它不顯示這是由JS設置cookie,它顯示PHPSESSID的cookie發佈評論後,

Array 
(
    [PHPSESSID] => c5rc6c8ggg24edg1v2o8hebb20 
) 

我不想刪除PHPSESSID cookie。, 我在使用js的頁面上顯示此內容。 as post_comment.php是同一臺服務器上另一個目錄中的另一個文件。

我做錯了什麼?

簡而言之, js設置cookie和php應該刪除cookie。

----------

更新1:

而在JS這樣

document.cookie = id + "=" + input_text + "; path=/"; 

和之後設置的Cookie我試圖設定路徑張貼cookie。,現在我明白了,

Array 
(
    [PHPSESSID] => c5rc6c8ggg24edg1v2o8hebb20 
    [4778] => this is comment 
) 

我的PHP代碼是這樣的,

//insert comment is db        
setcookie($id, "", time()-3600); 
printr($_COOKIE); 
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>'); 

但cookie是仍然存在。


更新2: 這是很奇怪的,

,如果我嘗試設置在PHP中同名的cookie,多了一個餅乾被創建。 我的php代碼。

setcookie($id, "sdf", time()+36000); 
printr($_COOKIE); 
exit('<p class="bg-info">Thank you! Your comment has been posted.</p>'); 

現在,當我檢查broswers cookie管理器,我看到2塊餅乾具有相同的名稱,

但兩者具有不同的內容,這是設置USNG的javascript有用戶enetered註釋和一個我們使用php設置的另一個cookie是內容「sdf」。

我不知道這是怎麼可能有2個cookie完全相同的名稱。 ,

任何線索?

+0

在評論存儲之後,您仍然可以在js端看到cookie嗎? – andrex 2014-09-22 04:41:55

+0

@andrex我沒有得到它,你的意思是,我重新加載頁面後,我填充了cookie值的評論框,甚至cookie都發布了。 – AMB 2014-09-22 04:44:21

+0

看到這個http://stackoverflow.com/questions/10593013/delete-cookie-by-name – gabereal 2014-09-22 04:46:00

回答

2

你需要確保所有的 參數(除名稱和時間取決於該cookie。)是相同的,而設置的Cookie在Javascript和而PHP刪除Cookie的

參數,即名稱,路徑(價值和到期時間可以不同。)

例如。

雖然設置在JavaScript中的cookie,如果你使用這樣

document.cookie = id + "=" + input_text + " ; path=/"; 
你設置爲「/」

然後在PHP中刪除的cookie,你應該專門設置這樣的路徑

//remove cookie. 
setcookie($id, "", time()-36000 , "/");