我有一个在线游戏,我想禁止屡犯者注册。
我通过在表中存储ip地址做了一个简单的ip-ban,代码看起来像这样:
$ipadr = $_SERVER["REMOTE_ADDR"];
$query="SELECT * FROM banned WHERE ip = '$ipadr'";
// if num results > 0, then the user is not allowed to register
然而,一些用户不断改变他们的ip地址回来。所以我想能够添加ip范围到数据库f.ex 187.15.200。*
我该怎么做呢?
我想象它可以与包含反向LIKE的查询一起工作,但我不知道如何制定它
example: SELECT * FROM banned WHERE '$ipadr' like ip%
您需要一个这样的PHP函数来获取IP地址IP地址的前三个元素,以便您可以像这样查询它们。
function GetFirstThree($ip) { // fnkr user wrote this function in another post just to give him credit
if(strlen($ip) <= 10) {
$pos = strpos($ip, '.', strlen($ip)-3);
} else {
$pos = strpos($ip, '.', strlen($ip)-4);
}
$ip = substr($ip, 0, $pos);
$ip = substr($ip, 0, strlen($ip));
return $ip;
}
查看我链接的帖子,了解获取IP地址前三个元素的适当方法。一旦你有了它,它只是一个简单的like
与通配符在mysql。
使用通配符执行查询。
SELECT * FROM banned WHERE '$ipadr' like '{$ip}%'
后