2011-02-04 180 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