我想检查IP是否列入白名单,但是IPv6-地址可以有不同的表示形式:
例如2001:0DB8:0:0:1::1是2001:0db8:0000:0000:0001:0000:0000:0001。
因此,字符串比较不起作用。我怎么知道两个地址相等?
使用inet_pton。
function is_ip_equal($ip1, $ip2) {
return inet_pton($ip1) == inet_pton($ip2);
}
Run Code Online (Sandbox Code Playgroud)
(但是,这仅在未使用PHP编译PHP时才有效--disable-ipv6 option。您可以使用进行检查if (!defined('AF_INET6')) echo "IPv6 support was disabled";)。
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |