子比主题 – 单IP限制多用户注册教程

子比主题 – 单IP限制多用户注册教程- 花猪资源网
子比主题 – 单IP限制多用户注册教程
此内容为免费阅读,请登录后查看
0
免费阅读
图片[1]- 子比主题 – 单IP限制多用户注册教程

代码部署
这个代码是实现的单日IP一次注册,有技术的可以去写一个插件或者子主题去写一个限制一天注册多少!

创建PHP文件:inc/functions/user/user-sign-limit.php文件,自己创建一下,然后将下面代码放里面!

<?php
/*
 * @Author: Qinver
 * @Url: zibll.com
 * @Date: 2024-01-01
 * @Description: 用户注册IP限制功能
 */

// 防止直接访问
defined('ABSPATH') || exit;

/**
 * 检查IP是否已经注册过用户
 */
function zib_check_ip_register_limit($user_ip) {
    global $wpdb;

    // 获取当前IP已注册的用户数量
    $registered_count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(*) FROM {$wpdb->usermeta} WHERE meta_key = 'register_ip' AND meta_value = %s",
        $user_ip
    ));

    // 如果已经有注册记录,则禁止注册
    if ($registered_count > 0) {
        return new WP_Error('ip_limit', '该IP已注册过账号,不能重复注册');
    }

    return true;
}

/**
 * 在用户注册时记录IP
 */
function zib_save_register_ip($user_id) {
    if (!$user_id) return;
    
    // 获取用户注册IP
    $user_ip = zib_get_client_ip();
    
    // 保存用户注册IP
    update_user_meta($user_id, 'register_ip', $user_ip);
}

/**
 * 获取客户端真实IP
 */
function zib_get_client_ip() {
    if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { //兼容CloudFlare
        $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
    } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { //兼容CDN和代理
        $ip = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]);
    } elseif (isset($_SERVER['REMOTE_ADDR'])) {
        $ip = $_SERVER['REMOTE_ADDR'];
    } else {
        $ip = '0.0.0.0';
    }
    return $ip;
}

// 在WordPress注册钩子中添加IP检查
add_filter('registration_errors', function($errors, $sanitized_user_login, $user_email) {
    // 获取用户IP
    $user_ip = zib_get_client_ip();
    
    // 检查IP限制
    $ip_check = zib_check_ip_register_limit($user_ip);
    if (is_wp_error($ip_check)) {
        $errors->add($ip_check->get_error_code(), $ip_check->get_error_message());
    }
    
    return $errors;
}, 10, 3);

// 在用户注册成功后保存IP
add_action('user_register', 'zib_save_register_ip');

定位:/wp-content/themes/zibll/func.php文件,没有创建记得自己创建一下,记得加上php头,要不然会报错!

// 引入IP限制注册功能
require_once get_theme_file_path('/inc/functions/user/user-sign-limit.php');
© 版权声明
评论 抢沙发

请登录后发表评论

    暂无评论内容