本文整理汇总了PHP中wfUtils::expandIPv6Address方法的典型用法代码示例。如果您正苦于以下问题:PHP wfUtils::expandIPv6Address方法的具体用法?PHP wfUtils::expandIPv6Address怎么用?PHP wfUtils::expandIPv6Address使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wfUtils
的用法示例。
在下文中一共展示了wfUtils::expandIPv6Address方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: isIPInRange
/**
* Check if the supplied IP address is within the user supplied range.
*
* @param string $ip
* @return bool
*/
public function isIPInRange($ip)
{
$ip_string = $this->getIPString();
// IPv4 range
if (strpos($ip_string, '.') !== false && strpos($ip, '.') !== false) {
if (preg_match('/\\[\\d+\\-\\d+\\]/', $ip_string)) {
$IPparts = explode('.', $ip);
$whiteParts = explode('.', $ip_string);
$mismatch = false;
for ($i = 0; $i <= 3; $i++) {
if (preg_match('/^\\[(\\d+)\\-(\\d+)\\]$/', $whiteParts[$i], $m)) {
if ($IPparts[$i] < $m[1] || $IPparts[$i] > $m[2]) {
$mismatch = true;
}
} else {
if ($whiteParts[$i] != $IPparts[$i]) {
$mismatch = true;
}
}
}
if ($mismatch === false) {
return true;
// Is whitelisted because we did not get a mismatch
}
} else {
if ($ip_string == $ip) {
return true;
}
}
// IPv6 range
} else {
if (strpos($ip_string, ':') !== false && strpos($ip, ':') !== false) {
if (preg_match('/\\[[a-f0-9]+\\-[a-f0-9]+\\]/', $ip_string)) {
$IPparts = explode(':', strtolower(wfUtils::expandIPv6Address($ip)));
$whiteParts = explode(':', strtolower(self::expandIPv6Range($ip_string)));
$mismatch = false;
for ($i = 0; $i <= 7; $i++) {
if (preg_match('/^\\[([a-f0-9]+)\\-([a-f0-9]+)\\]$/i', $whiteParts[$i], $m)) {
$ip_group = hexdec($IPparts[$i]);
$range_group_from = hexdec($m[1]);
$range_group_to = hexdec($m[2]);
if ($ip_group < $range_group_from || $ip_group > $range_group_to) {
$mismatch = true;
break;
}
} else {
if ($whiteParts[$i] != $IPparts[$i]) {
$mismatch = true;
break;
}
}
}
if ($mismatch === false) {
return true;
// Is whitelisted because we did not get a mismatch
}
} else {
if ($ip_string == $ip) {
return true;
}
}
}
}
return false;
}