检查是否存在WordPress密码保护cookie

时间:2017-03-04 07:07:43

标签: php

使用WordPress,如果您使用受密码保护的页面,当用户使用成功的密码时,会生成一个cookie,如下所示:

wp-postpass_299da1fd9cb967a93782c5397fa3a35e

在PHP中是否存在检查此cookie是否存在的情况?

即使只检查是否存在以wp-postpass_开头的Cookie?

运行var_dump($_COOKIE)时$ _COOKIE的内容:

array(9) {
    ["wordpress_test_cookie"] => string(15)
    "WP Cookie check" 
    ["wp-postpass_299da1fd9cb967a93782c5397fa3a35e"] => string(34)
    "$P$BXtsZ0i1qom3bqiFk4b9GeG8l9dFVG." 
}

2 个答案:

答案 0 :(得分:0)

if(isset($_COOKIE)){
    foreach($_COOKIE as $key=>$val){
        if(strpos($key,'wp-postpass_') === false) {
        //not found
        }else{
        //found
        }
    }
}

答案 1 :(得分:0)

我发现一个比WordPress Developer Docs上可接受的答案更好的解决方案,以查看Cookie是否存在:

if ( isset( $_COOKIE['wp-postpass_' . COOKIEHASH] ) ) {
     //custom code 
}

同样,如果您要检查cookie是否不存在:

if ( ! isset( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) ) {
    //custom code
}

此代码对于可能没有密码保护的页面很有用,因为这些页面不是存档页面,而是页面,但其中包含的内容可能受到保护(例如帖子)。