我有一个在线游戏,我想禁止重复违规者注册。
我通过将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。*
现在我该如何做这样的事情呢?
我想它可以与包含反向的查询一起工作,但我不知道如何表达它
example: SELECT * FROM banned WHERE '$ipadr' like ip%发布于 2014-05-12 09:45:34
您需要一个这样的php函数来获取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地址的前三个元素的适当方法。一旦你有了它,在mysql中它只是一个带有通配符的简单like。
使用通配符执行查询。
SELECT * FROM banned WHERE '$ipadr' like '{$ip}%'https://stackoverflow.com/questions/23599836
复制相似问题