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

本文介绍如何通过简单代码实现限制WordPress站点上单一IP地址注册用户的数量,以防止恶意注册行为。文中提供了具体的PHP代码实现,包括记录IP、验证IP及错误提示等功能。


本文转自:http://mr-z.me/2017/12/wordpress_restrict_ip_reg_users.html

转载仅作备忘!

由于某种需要,在某些场景下,我们可能需要限制单一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;
}



效果如下图:
WORDPRESS代码实现IP注册限制
将上述代码添加到主题的function中即可,如有bug可在评论区反馈!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值