WordPress受保护的页面密码Cookie

时间:2011-02-04 20:25:31

标签: wordpress cookies passwords protected

当您登录受密码保护的页面时,WordPress会设置一个类似于wp-postpass_ hash 的cookie。

这个cookie似乎永远存在。我希望能够为用户提供“注销”链接。如果我不知道哈希,有没有办法找到并删除这个特定的cookie?也许有办法通过'wp-postpass'找到它来获取cookie?

我见过其他改变WordPress核心文件的解决方案来改变cookie的过期日期,但是当有更新时这不会持续。也许我可以编写一个函数来改变这个特定cookie的到期时间?

任何提示?谢谢!

4 个答案:

答案 0 :(得分:3)

如果您不知道哈希,那没关系。实际上,cookie哈希是博客网址的MD5。如果您想知道您的网站cookie哈希,请尝试以下方法:

<?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);
?>

答案 1 :(得分:0)

您是否尝试向用户提供wp_logout_url()的链接,而不是为自己编程?

答案 2 :(得分: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 cookie在数组中排在最后。

答案 3 :(得分:0)

<?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 cookie的位置