使用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."
}
答案 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
}
此代码对于可能没有密码保护的页面很有用,因为这些页面不是存档页面,而是页面,但其中包含的内容可能受到保护(例如帖子)。