4

基本上,我的目标是让我的用户指定一个 IP 范围以访问测试。因此,假设这些值存储在我的数据库中:

来自:148.197.34.112

至:148.197.34.255

我可以使用哪些功能将这些 IP 地址转换为数字以进行比较?

所以很明显,如果用户尝试加载页面......如果他的 IP 不在 IP 范围内,请重新定向它们。

提前致谢 :)

4

2 回答 2

6

ip2long ()函数将为 IPv4 地址完成这项工作。

要将 IPv6 地址转换为 128 位整数,请使用inet_pton()函数。

于 2011-05-05T14:08:18.160 回答
1

如果值完全以这种格式存储在数据库中,那么您可以在 php.ini 中使用INET_ATON函数(至少对于 mysql)和 ip2long()。

$iplong=ip2long($ip);
$q=mysql_query("SELECT * FROM ips WHERE INET_ATON(ip_from)<='".$iplong."' AND INET_ATON(ip_to)>='".$iplong."' LIMIT 0,1");

但是,当然,将 long 值存储在 DB 中会好得多,而不是纯 IP。

于 2011-05-05T14:23:42.733 回答