基本上,我的目标是让我的用户指定一个 IP 范围以访问测试。因此,假设这些值存储在我的数据库中:
来自:148.197.34.112
至:148.197.34.255
我可以使用哪些功能将这些 IP 地址转换为数字以进行比较?
所以很明显,如果用户尝试加载页面......如果他的 IP 不在 IP 范围内,请重新定向它们。
提前致谢 :)
基本上,我的目标是让我的用户指定一个 IP 范围以访问测试。因此,假设这些值存储在我的数据库中:
来自:148.197.34.112
至:148.197.34.255
我可以使用哪些功能将这些 IP 地址转换为数字以进行比较?
所以很明显,如果用户尝试加载页面......如果他的 IP 不在 IP 范围内,请重新定向它们。
提前致谢 :)
ip2long ()函数将为 IPv4 地址完成这项工作。
要将 IPv6 地址转换为 128 位整数,请使用inet_pton()函数。
如果值完全以这种格式存储在数据库中,那么您可以在 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。