/** * Converts a string containing an IP address into its integer value and return string representation. * @param $ip (string) IP address to convert. * @return int IP address as string. * @since 9.0.033 (2009-11-03) */ function getIpAsString($ip) { $ip = getIpAsInt($ip); return sprintf('%.0f', $ip); }
/** * Check if user's IP is valid over test IP range * @param $user_ip (int) user's IP address in expanded IPv6 format. * @param $test_ips (int) comma separated list of valid test IP addresses. The '*' character may be used to indicate any number in IPv4 addresses. Intervals must be specified using the '-' character. * @return true if IP is valid, false otherwise */ function F_isValidIP($user_ip, $test_ips) { if (empty($user_ip) or empty($test_ips)) { return false; } // convert user IP to number $usrip = getIpAsInt($user_ip); // build array of valid IP masks $test_ip = explode(',', $test_ips); // check user IP against test IP masks while (list($key, $ipmask) = each($test_ip)) { if (strrpos($ipmask, '*') !== false) { // old range notation using IPv4 addresses and '*' character. $ipv4 = explode('.', $ipmask); $ipv4_start = array(); $ipv4_end = array(); foreach ($ipv4 as $num) { if ($num == '*') { $ipv4_start[] = 0; $ipv4_end[] = 255; } else { $num = intval($num); if ($num >= 0 and $num <= 255) { $ipv4_start[] = $num; $ipv4_end[] = $num; } else { $ipv4_start[] = 0; $ipv4_end[] = 255; } } } // convert to IPv6 address range $ipmask = getNormalizedIP(implode('.', $ipv4_start)) . '-' . getNormalizedIP(implode('.', $ipv4_end)); } if (strrpos($ipmask, '-') !== false) { // address range $ip_range = explode('-', $ipmask); if (count($ip_range) !== 2) { return false; } $ip_start = getIpAsInt($ip_range[0]); $ip_end = getIpAsInt($ip_range[1]); if ($usrip >= $ip_start and $usrip <= $ip_end) { return true; } } elseif ($usrip == getIpAsInt($ipmask)) { // exact address comparison return true; } } return false; }