【问题标题】:Call 'wp_logout' when cookie expires (php or javascript)cookie 过期时调用“wp_logout”(php 或 javascript)
【发布时间】:2022-01-11 22:19:51
【问题描述】:

如果我的wordpress_logged_in_HASH cookie 过期,我正在寻找一种方法来调用wp_logout(服务器端)。不幸的是,到目前为止我找不到任何解决方案。对stackoverflow和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 总是空的。你知道,为什么它是空的吗?

标签: javascript php apache cookies session-cookies


【解决方案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_cookiehttp://codex.wordpress.org/Function_Reference/wp_clear_auth_cookie

【讨论】:

  • 谢谢,但用户应该在不重新加载页面的情况下自动注销。而且你的代码不符合这个要求。还有什么想法吗?
  • @cr4nk 这听起来像XY Problem;一旦时间到期,无论是否重新加载页面,WordPress都会注销用户;似乎您并不关心 WordPress 会自动注销,而您只是想以某种方式确保调用 wp_logout(可能您需要触发一些注销操作)。
猜你喜欢
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多