首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery检查wordpress_logged_in cookie

jQuery检查wordpress_logged_in cookie
EN

Stack Overflow用户
提问于 2018-01-29 23:18:32
回答 6查看 8.9K关注 0票数 7

有一种方法可以使用jquery检查wordpress cookie wordpress_logged_in

我使用的是cloudflare完全缓存,所以没有办法检查用户是否记录了这个cookie,我尝试使用jquery读取它,但是看起来是受保护的,不可见,我只能使用PHP访问它。

下面是我现在能读到的:

代码语言:javascript
复制
$logged_in = 'no'; 
if (count($_COOKIE)) {
    foreach ($_COOKIE as $key => $val) {
        if (preg_match("/wordpress_logged_in/i", $key)) {
            $logged_in = 'yes';
        }       
    }
}

也许简单地通过jquery来检查它是有可能的,但是我没有找到方法。

谢谢你的帮助

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-02-03 16:16:04

您不能使用wordpress_logged_in访问名为js/jquery的wordpress cookie,仅仅因为它被标记为HttpOnly

只有通过HTTPS协议加密请求才能将安全cookie发送到服务器.为了防止跨站点脚本攻击,JavaScript无法访问HttpOnly cookies;它们只发送到服务器。

但从3.0开始,wordpress在用户登录时再添加一个名为wp-设置-{time}-[UID]的cookie:

WordPress还设置了一些wp设置-{time}-UID cookie。最后的数字是用户数据库表中的个人用户ID。这是用于自定义您的管理界面视图,也可能是主站点界面。

您可以使用js/jquery获得这个cookie。因此,您甚至可以从cookie获得用户ID。

下面是用于获取cookie和检查用户是否登录的js函数:

代码语言:javascript
复制
function getLoggedInCookie() {
    var cookie = document.cookie.indexOf('wp-settings-time') !== -1;

    if(cookie){
        alert('Logged in');
    }else{
        alert('Not User');
    }
}
getLoggedInCookie();

jQuery解决方案将包括曲奇插件到您的wordpress主题/插件,并尝试使用它(可能需要在一些修改)。

注:

提供的代码将用于使用standart WordPress函数和端点(如http://{website-name}/wp-admin/http://{website-name}/wp-login.php )的登录表单。第三方插件无法设置名为wp-settings-{time}-[UID]的cookie。

票数 7
EN

Stack Overflow用户

发布于 2018-01-30 01:55:51

如果您只想知道用户是否已登录,则可以检查body元素是否具有类“登录”,即

代码语言:javascript
复制
jQuery( 'body' ).hasClass( 'logged-in' )

如果用户登录,WordPress会将该类添加到body元素中。

票数 2
EN

Stack Overflow用户

发布于 2018-02-05 18:00:02

您可以创建ajax请求,以检查用户是否登录:

在functions.php中:

代码语言:javascript
复制
function ajax_check_user_logged_in() {
    echo is_user_logged_in()?'yes':'no';
    die();
}
add_action('wp_ajax_is_user_logged_in', 'ajax_check_user_logged_in');
add_action('wp_ajax_nopriv_is_user_logged_in', 'ajax_check_user_logged_in');

function load_my_scripts()
{
    wp_localize_script('my-ajax-handle', 'the_ajax_script', array('ajaxurl' => admin_url('admin-ajax.php')));
}

add_action('wp_enqueue_scripts', 'load_my_scripts');

在js中:

代码语言:javascript
复制
var data = {
    action: 'is_user_logged_in'
};

jQuery.post(the_ajax_script.ajaxurl, data, function(response) {
    if(response == 'yes') {
        // user is logged in
    } else {
        // user is not logged in
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48511579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档