简单代码实现wordpress用户注册IP地址限制

由于某种需要,在某些场景下,我们可能需要限制单一IP注册用户的个数,看 起来复杂,其实实现起来之用一小段代码即可。

思路:将每个用户注册的IP写入文本文件,新手户注册时判断IP是否包含在该文本中(或者出现的次数)
优点:不需要安装插件,复制粘贴代码即可

function validate_reg_ip() {
  global $err_msg; 
  $allow_time = 1; //每个IP允许注册的用户数
  $allowed = true;
  $ips = file_get_contents("ip.php");
  $times = substr_count($ips,getIp());
  if($times >=$allow_time) {
    $allowed = false;
    $err_msg = "该IP注册用户超过上限,无法继续注册!";
  }
  $ips = '';
  return $allowed;
}
add_filter('validate_username', 'validate_reg_ip', 10, 1);
function ip_restrict_errors($errors) {
  global $err_msg;
  if ( isset( $errors->errors['invalid_username'] ) )
  $errors->errors['invalid_username'][0] = __( $err_msg, ' ' );
  return $errors;
}
add_filter('registration_errors', 'ip_restrict_errors');
function update_reg_ip(){
file_put_contents("ip.txt",getIp()."\r\n",FILE_APPEND);
}
add_action('user_register','update_reg_ip');
function getIp(){
  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
  $ip = getenv("HTTP_CLIENT_IP");
  else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
  $ip = getenv("HTTP_X_FORWARDED_FOR");
  else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
  $ip = getenv("REMOTE_ADDR");
  else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
  $ip = $_SERVER['REMOTE_ADDR'];
  else
  $ip = "unknown";
  return $ip;
}

将上述代码添加到主题的function中即可,如有bug可在评论区反馈!

内容查看
查看价格免费
客服微信:wzsdream,添加请备注王子驿站!
原文链接:http://94wz.top/2304.html,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?