gpt4 book ai didi

php - 检查接近相同的 IP

转载 作者:行者123 更新时间:2023-11-29 07:48:43 25 4
gpt4 key购买 nike

我目前遇到一个问题,即用户使用不同的 IP 提交多个表单。 (增加一。)我的意思是用户使用 123.123.123.123、然后 123.123.123.124、然后 123.123.123.125 等提交表单。在。
我制作了一个MySQL表,用于存储提交时的IP和时间戳(UNIX)。如何才能使表中存在诸如 123.123.123.123 这样的 IP,具有 IP 123.123.123.124 的用户无法在 X 分钟内提交表单。
到目前为止,我已经想出了迭代整个 MySQL 表,然后检查 IP 是否匹配的方法。这样做的问题是,有很多记录(大约 25,000 条),因此每次有人提交表单时,我都必须遍历 25,000 个条目,这种情况很常见。

有更好的解决方案吗?

最佳答案

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

ip2long — Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address

例如

echo ip2long("123.123.123.123");     //2071690107
echo "\n";
echo ip2long("123.123.123.124"); //2071690108

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

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

Fiddle

关于php - 检查接近相同的 IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27009185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com