2011-02-04 182 views
3

當您登錄到受密碼保護的頁面時,WordPress會設置一個cookie,看起來像wp-postpass_ 散列WordPress受保護頁面密碼Cookie

這個cookie似乎永遠存在。我希望能夠爲用戶提供「註銷」鏈接。如果我不知道散列,有沒有辦法找到並刪除這個特定的cookie?也許有一種方法可以通過基於'wp-postpass'找到cookie來獲取cookie?

我已經看到其他解決方案來改變WordPress的核心文件來改變cookie的到期日期,但是這不會在更新時持續。也許我可以寫一個函數來改變這個特定的cookie到期?

任何提示?謝謝!

回答

1
<?php 
$pass_cookie=''; 
foreach($_COOKIE as $key=>$value){ 
    if(!strncmp($key,"wp-postpass_",12)){ 
    $pass_cookie = $key; 
    break; 
    } 
} 
if($pass_cookie){ 
    setcookie($pass_cookie,'',0); 
} 
?> 

我寧願使用類似上面 - 它不依賴於wp_postpass餅乾

0

你有沒有嘗試給用戶提供一個鏈接到wp_logout_url(),而不是自己編程?

+4

wp_logout_url()用於註銷註冊用戶。我指的是基於cookie的密碼保護頁面。 – HWD 2011-02-05 02:53:30

0

我落得這樣做:

<?php 
// turn all cookies into string 
$cookie_string = implode(array_keys($_COOKIE)); 
// find position of desired cookie 
$pos = strpos($cookie_string,'wp-postpass'); 
// extract string starting at $pos 
$pass_cookie = substr($cookie_string,$pos); 
// set cookie to expire on browser close 
setcookie($pass_cookie,'',0); 
?> 

這可能不是最完美的解決方案,尤其是因爲它需要的WP-postpass餅乾是去年在數組中。

3

這沒關係,如果你不知道哈希的位置。其實Cookie哈希是博客網址的MD5。如果你想知道你的網站cookie hash,那麼試試這個:

<?php 

    $url="http://www.your-blog.com"; 
    $COOKIEHASH = md5($url); 

    //Now, your cookie will be, 
    echo 'wp-postpass_' . $COOKIEHASH; // Name of the cookie of your blog 

    //Now, you can delete it whenever you want. :) 

    //setting your cookie 
    //setcookie('wp-postpass_' . $COOKIEHASH, $password, time() + 864000, COOKIEPATH); 
?> 
+0

`get_bloginfo('url');` – testing 2012-09-14 12:13:31