为WordPress添加登录日志

如果你的WordPress开放注册,很有可能需要一个登录日志记录,方便随时查看会员登录情况,这里简单的说一下实现原理。

首先需要创建一个数据表用来存放登录日志信息,字段分别是:

  • ID:日志ID;
  • user_login:用户登录账号,可能是用户名,也可能是邮箱;
  • log_time:登录时间;
  • ipaddress:用户IP地址
  • message:消息,登录失败则记录错误信息;

WordPress创建数据库表的代码可以参考:

global $pagenow;
if ( is_admin() && isset( $_GET['activated'] ) && $pagenow == 'themes.php' ) {
global $wpdb;
$table_name = $wpdb->prefix . 'logs';
if( $wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name ) {
$sql = 'CREATE TABLE IF NOT EXISTS ' . $table_name . ' (
ID bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT,
user_login varchar(250) NOT NULL,
log_time datetime NOT NULL,
ipaddress text NOT NULL,
message text
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;';
require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
dbDelta($sql);
}
}

将以上代码放到主题文件的functions.php中,当启用主题的时候会判断wp_logs表是否存在,不存在则创建。

写入登录日志的代码如下:

function bzg_login_logs($user_login, $user_password) {
global $wpdb;
$user = wp_authenticate($user_login, $user_password);
$data = array(
'user_name' => $user_login,
'log_time' => date('Y-m-d H:i:s', current_time('timestamp') ),
'ipaddress' => $_SERVER['REMOTE_ADDR'] == '::1' ? '127.0.0.1' : $_SERVER['REMOTE_ADDR'],
'message' => '登录成功',
);
if ( is_wp_error($user) ) {
$message = $user->get_error_message();
$data['message'] = $message;
$data['message'] = preg_replace('/<a[^>]*>.*<\/a>/i', '', $data['message']);
$data['message'] = wp_strip_all_tags($data['message'], true);
}
$wpdb->insert('wp_logs', $data);
}
add_action('wp_authenticate', 'bzg_login_logs', 10, 2 );

里用到了钩子wp_authenticate,WordPress登录是以wp_signon()函数来完成的,在该函数中定义了钩子wp_authenticate,我们通过wp_authenticate()函数验证登录信息是否正确,然后将结果写入日志。

当然,你可能还需要一个面来输出登录日志列表,更好的办法是写一个插件来实现所有需求。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress作者文章页面链接标签:the_author_posts_link

2021-4-8 11:29:32

WordPress教程

WordPress作者文章数量标签:the_author_posts

2021-4-8 23:28:45

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索