有一种方法可以使用jquery检查wordpress cookie wordpress_logged_in?
我使用的是cloudflare完全缓存,所以没有办法检查用户是否记录了这个cookie,我尝试使用jquery读取它,但是看起来是受保护的,不可见,我只能使用PHP访问它。
下面是我现在能读到的:
$logged_in = 'no';
if (count($_COOKIE)) {
foreach ($_COOKIE as $key => $val) {
if (preg_match("/wordpress_logged_in/i", $key)) {
$logged_in = 'yes';
}
}
}也许简单地通过jquery来检查它是有可能的,但是我没有找到方法。
谢谢你的帮助
发布于 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函数:
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。
发布于 2018-01-30 01:55:51
如果您只想知道用户是否已登录,则可以检查body元素是否具有类“登录”,即
jQuery( 'body' ).hasClass( 'logged-in' )如果用户登录,WordPress会将该类添加到body元素中。
发布于 2018-02-05 18:00:02
您可以创建ajax请求,以检查用户是否登录:
在functions.php中:
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中:
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
}
});https://stackoverflow.com/questions/48511579
复制相似问题