WordPress异地IP登录自动禁封用户,在很多交互场景很有用处,也能很大程度保护用户的账户和数据安全。
<?php
// 用于WordPress的异地IP登录自动封禁用户的插件或功能示例
// 检测异地登录,如果是则封禁用户
function detect_and_ban_offsite_login() {
// 获取当前用户对象
$user = wp_get_current_user();
// 检查用户是否登录
if ( $user->ID && is_user_logged_in() ) {
// 获取用户登录IP
$user_ip = $_SERVER['REMOTE_ADDR'];
// 获取用户最后一次登录IP
$last_ip = get_user_meta( $user->ID, 'last_login_ip', true );
// 如果用户最后一次登录IP与当前IP不同,并且不是同一个IP,则封禁用户
if ( $last_ip && $last_ip != $user_ip ) {
// 更新用户封禁状态
update_user_meta( $user->ID, 'ban_user', 1 );
// 可以在这里添加通知或者日志记录
// do_action( 'user_offsite_login_banned', $user->ID, $user_ip, $last_ip );
}
// 更新用户最后登录IP
update_user_meta( $user->ID, 'last_login_ip', $user_ip );
}
}
// 添加钩子,在用户登录时检测异地登录
add_action( 'wp_login', 'detect_and_ban_offsite_login' );
这段代码首先定义了一个函数 detect_and_ban_offsite_login
,它在用户登录时被触发。该函数会检查用户的最后登录IP与当前IP是否不同,如果不同,则会更新用户的元数据以标记用户的封禁状态。然后,使用 wp_login
钩子将其注册为在用户登录时执行。这个简单的例子演示了如何在WordPress中检测异地登录并自动封禁用户。