首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库中的mysql通配符

问数据库中的mysql通配符
EN

Stack Overflow用户
提问于 2014-05-12 09:37:15
回答 1查看 63关注 0票数 0

我有一个在线游戏,我想禁止重复违规者注册。

我通过将ip地址存储在表中来创建一个简单的ip-ban,代码类似于:

代码语言:javascript
复制
    $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。*

现在我该如何做这样的事情呢?

我想它可以与包含反向的查询一起工作,但我不知道如何表达它

代码语言:javascript
复制
example: SELECT * FROM banned WHERE '$ipadr' like ip%
EN

回答 1

Stack Overflow用户

发布于 2014-05-12 09:45:34

您需要一个这样的php函数来获取ip地址的前三个元素,这样您就可以像这样查询它们。

代码语言:javascript
复制
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。

使用通配符执行查询。

代码语言:javascript
复制
SELECT * FROM banned WHERE '$ipadr' like '{$ip}%'

post

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23599836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档