检测身份验证是否设置为“记住”正在登录的用户

时间:2016-04-20 作者:Greeso

我正在为正在处理的主题编写自定义前端登录页。登录页面尽可能使用wordpress功能(例如。,wp_signon, wp_set_auth_cookie, ...等等)。

对于登录,我执行以下操作

// Detect if we should remember the user
$remember = false;
if (isset($_POST[\'remember_me\'])) {
    $remember = true;
}

// Sign in to WordPress
$creds = array(
    \'user_login\'    => $userlogin,
    \'user_password\' => $password,
    \'remember\'      => $remember
);

$logged_on_user = wp_signon($creds, false);
请注意,如果remember 设置为true, 这将允许WordPress记住登录的用户(即,当用户关闭窗口时,无需再次登录)。这remember 字段基于用户在登录时通过单击“记住我”复选框所做的选择。

在我的代码中,我喜欢检测用户是否设置了rememeber 字段设置为true。我不确定如何检测授权cookie并读取此值。我也找不到这方面的文档。那么,我该怎么做呢?谢谢

根据Dan在下面评论中的要求编辑,下面是登录html的样子

<form method="post">

    <input type="hidden" name="form_name" value="login">
    <input type="hidden" name="nonce_key" value="<?php echo wp_create_nonce(\'nonce-key\'); ?>" />

    <label for="user_login">Email or Username</label>
    <input type="text" name="user_login" value="<?php echo (isset($_POST[\'user_login\']) ? htmlspecialchars($_POST[\'user_login\']) : \'\'); ?>" />

    <label for="user_password">Password</label>
    <input type="password" name="user_password" value="" />

    <input type="checkbox" name="remember_me" <?php echo (isset($_POST[\'remember_me\']) ? \'checked\' : \'\'); ?> />
    <label for="remember_me">Remember me</label>

    <a href="<?php echo $reset_password_page_url; ?>">Forgot your password?</a>

    <input type="submit" name="submit" value="Log In" />

</form>

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

你不能也不应该这样做。

该设置的正确全名应为“在此浏览器上记住我(14天)”。关键是它甚至不是基于用户的设置,在同一台具有不同浏览器会话的计算机上,它可以具有不同的值。

此外,由于它是完全由用户控制的,您不应该依赖它来处理用户在登录时在表单中实际发送的内容。

当然,如果您有一个上述问题不适用的用例,您可以设置额外的cookie,指定用户选择“记住我”

相关推荐

setcookies and header send

我在header.php 模板的如下所示:setcookie(\"test_time_\".$cookie_id.\"\", $cookies_times, time()+3600); 结果总是这样headers already sent, 我在插件内部使用这个插件,也在插件外部尝试,结果总是一样的。可以在标题中使用cookie,或者我可以做些什么来解决这个问题,我需要使用cookie来实现works little功能。