首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查近乎相同的IP

检查近乎相同的IP
EN

Stack Overflow用户
提问于 2014-11-19 12:50:18
回答 2查看 29关注 0票数 0

我目前有一个问题,用户提交一个以上的形式与不同的ip。(增加一个。)我的意思是,用户先使用123.123.123.123, then 123.123.123.124提交表单,然后使用123.123.123.125等提交表单。

我制作了一个MySQL表,用于存储提交时的IP和时间戳(UNIX)。如何使表中存在123.123.123.123等IP,IP为123.123.123.124的用户无法在X分钟内提交表单。

到目前为止,我已经迭代了整个MySQL表,然后检查IP是否匹配。这样做的问题是有很多记录(Roughly 25,000),所以每次有人提交表单时,我都必须遍历25,000个条目,这是相当常见的。

有没有更好的解决方案来使用它?

EN

回答 2

Stack Overflow用户

发布于 2014-11-19 12:55:52

如果您想在以后对IP地址运行查询,请不要将IP地址存储为字符串。使用将它们转换为正确的数字地址

ip2long -将包含(IPv4)网际协议点地址的字符串转换为正确的地址

例如

代码语言:javascript
复制
echo ip2long("123.123.123.123");     //2071690107
echo "\n";
echo ip2long("123.123.123.124");    //2071690108

注意到模式(1+)了吗?现在,您可以轻松地比较这两个值,并在该值上创建索引,这样您的数据库就不必扫描所有的表。

一旦您获得该格式的IP地址,您就可以编写一些简单的数学公式来检查您愿意检查的适当子网范围。

票数 2
EN

Stack Overflow用户

发布于 2014-11-19 12:57:10

IPv4地址可以表示为32位整数,MySQL可以使用函数INET_ATON()进行转换,或者您可以使用ip2long()函数转换和比较if是否在给定范围内。

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

https://stackoverflow.com/questions/27009185

复制
相关文章

相似问题

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