cookie 过期时调用“wp_logout”(php 或 javascript)
Posted
技术标签:
【中文标题】cookie 过期时调用“wp_logout”(php 或 javascript)【英文标题】:Call 'wp_logout' when cookie expires (php or javascript) 【发布时间】:2022-01-11 22:19:51 【问题描述】:如果我的wordpress_logged_in_HASH
cookie 过期,我正在寻找一种方法来调用wp_logout
(服务器端)。不幸的是,到目前为止我找不到任何解决方案。对***和google做了很多研究,但还是没有做。
有没有人有一些建议或想法如何做到这一点?
服务器端我可以检查 cookie 是否以$_SERVER['HTTP_COOKIE']
退出。变量在我的共享服务器上退出,这有效。但是当cookie过期时如何自动运行wp_logout
?也许通过一些javascript?
if(strpos($_SERVER['HTTP_COOKIE'], 'wordpress_logged_in') == true)
echo "Login cookie exists!<br>";
var_dump($_SERVER['HTTP_COOKIE']);
//echo($startTime = microtime(true));
else
echo "Login cookie not exists!";
var_dump($_SERVER['HTTP_COOKIE']);
【问题讨论】:
$_COOKIE['wordpress_logged_in']
可能会更安全一些。不过也不是那么安全。应该检查服务器端的会话,而不是 cookie
$_COOKIE['wordpress_logged_in']
不可用。实际上$_COOKIE
总是空的。你知道,为什么它是空的吗?
【参考方案1】:
只需更改会话过期时间,如 mentioned,通过添加主题的 functions.php
类似:
add_filter('auth_cookie_expiration', 'my_expiration_filter', 99, 3);
function my_expiration_filter($seconds, $user_id, $remember)
//if "remember me" is checked;
if ( $remember )
//WP defaults to 2 weeks;
$expiration = 14*24*60*60; //UPDATE HERE;
else
//WP defaults to 48 hrs/2 days;
$expiration = 2*24*60*60; //UPDATE HERE;
//http://en.wikipedia.org/wiki/Year_2038_problem
if ( PHP_INT_MAX - time() < $expiration )
//Fix to a little bit earlier!
$expiration = PHP_INT_MAX - time() - 5;
return $expiration;
令人惊讶的是,WordPress
根本不使用PHP
会话。它只使用cookies。并且它使用了一些带有散列名称的名称。
所以不要直接与他们混淆,并使用 WordPress 的方式使用上面的过滤器。
或者通过调用WordPress
API。例如。如果要注销当前用户,可以拨打wp_clear_auth_cookie
:
http://codex.wordpress.org/Function_Reference/wp_clear_auth_cookie
【讨论】:
谢谢,但用户应该在不重新加载页面的情况下自动注销。而且你的代码不符合这个要求。还有什么想法吗? @cr4nk 这听起来像XY Problem;一旦时间到期,无论是否重新加载页面,WordPress都会注销用户;似乎您并不关心 WordPress 会自动注销,而您只是想以某种方式确保调用wp_logout
(可能您需要触发一些注销操作)。以上是关于cookie 过期时调用“wp_logout”(php 或 javascript)的主要内容,如果未能解决你的问题,请参考以下文章
cookie.setMaxAge();如何设置这个cookie永不过期?