2015-10-06 88 views
1

我需要爲Wordpress函數編寫一些自定義代碼,並且我需要能夠刪除以wp-postpass_開頭的所有Cookie。我知道這可以用jQuery來完成,但我不確定如何在PHP中實現它。PHP刪除cookie,以wp_postpass_開頭

我試過谷歌搜索和搜索這裏,但我一直沒能找到任何符合我想要做的事情。

謝謝你在前進, 安迪

編輯: 對不起,我應該提到,WordPress的附加一個隨機字符串到的wp-postpass_年底,因此爲什麼我需要找到與開始任何cookie wp-postpass_。道歉,清晨。

+1

是什麼?你試過沒,我們看一些代碼。 – jmattheis

+0

我還沒有嘗試過任何東西,因爲我不知道最佳方法。我在帖子中說過。 –

回答

2

因此,遍歷所有cookie並檢查是否包含wp_postpass_,然後刪除cookie。

foreach($_COOKIE as $cookieKey => $cookieValue) { 
    if(strpos($cookieKey,'wp-postpass_') === 0) { 
     // remove the cookie 
     setcookie($cookieKey, null, -1); 
     unset($_COOKIE[$cookieKey]); 
    } 
} 
+1

只是好奇,這是否也會刪除Cookie'test_wp_postpass_something'? –

+0

是的,因爲他會檢查「wp_postpass_」是否在字符串中,而不是在字符串的開頭。 === 0而不是!==假 – Kulvar

+0

@TomHart you'r right編輯我的回答ty – jmattheis

1

如果您有機會獲得$ _COOKIE超全局只是做

$past = time() - 86400; 
foreach($_COOKIE as $name => $value) { 
    if(strpos($name, 'wp-postpass_') === 0) { 
     setcookie($name, '', $past); 
     unset($_COOKIE[$name]); 
    } 
} 
+0

我試過了,但cookie仍然存在 –

+0

setcookie函數只是說「發送答案時從瀏覽器中刪除它們」。如果您想從當前腳本調用中刪除它們,則需要添加一些代碼行。 我已經添加了一行以從當前上下文中刪除。 – Kulvar

+0

試過了,它仍然存在?哈哈 –