比较IP地址的前三个部分仅重复

时间:2014-07-05 13:46:15

标签: php

我正在使用PHP管理一个网站,为访问者提供奖励。每24小时已经有一个IP地址限制,但我们需要将此限制扩展到每小时每个范围一个IP。目前,我们可以在同一范围内看到多达30个声称获得奖励的IP地址。

我有一个在过去一小时内看到的IP地址的数据库结果,我有用户当前的IP地址。

我想知道是否有人知道要使用的好功能,或者如果用户当前的IP属于过去一小时内看到的网络,则有自己的比较。从下面的相同IP地址,我们希望比较并返回true,如果1,2和3匹配。

示例IP 1.2.3.4(1,2和3上的匹配将返回true。已经检查完全匹配。)

如果我们获得匹配,则不会支付任何奖励,并且用户必须稍后返回。我认为网络管理员正在利用他们的资源从我们的网站上获取回报,这对其他想要参与的人来说是不公平的。

1 个答案:

答案 0 :(得分:1)

好吧,因为每个人都忙着说这是多么愚蠢的事情,而不是回答这个问题我会自己回答。假设我们有充分的理由这样做,而不是花时间来解释我们的理由!

我使用本地IP地址并使用explode函数将其转换为数组。

$ipArray = explode(".", $ip, 4);

然后我删除了最后一个条目。

array_pop($ipArray);

然后我遍历外部IP地址(如果有的话)并对每个地址执行相同的操作。

$exArray = explode(".", $exIP, 4);
array_pop($exArray);

最后我需要做的就是比较两个阵列。

if ($ipArray == $exArray) { return true; }

也许有一种更简单的方法可以做到这一点,但这对我们来说效果很好。我们已经失去了我们网站上的奖励,只有极少数网络管理员利用他们的资源剥离我们的网站。与仅在几秒钟内获得200个奖励的人相比,拔掉并插回路由器以获取新IP无关紧要。

以下是使用的完整代码。 https://github.com/Bushstar/applebyte-faucet/commit/643bcd2111378bd6d1b2da34357290bd1d4136ae