致命错误:在function.php中调用未定义函数validate_ip()

时间:2016-10-11 04:51:37

标签: php

            // check for shared internet/ISP IP
            if (!empty($_SERVER['HTTP_CLIENT_IP']) && validate_ip($_SERVER['HTTP_CLIENT_IP'])) {
                return $_SERVER['HTTP_CLIENT_IP'];
            }

            // check for IPs passing through proxies
            if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                // check if multiple ips exist in var
                if (strpos($_SERVER['HTTP_X_FORWARDED_FOR'], ',') !== false) {
                    $iplist = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
                    foreach ($iplist as $ip) {
                        if (validate_ip($ip))
                            return $ip;
                    }
                } else {
                    if (validate_ip($_SERVER['HTTP_X_FORWARDED_FOR']))
                        return $_SERVER['HTTP_X_FORWARDED_FOR'];
                }
            }
            if (!empty($_SERVER['HTTP_X_FORWARDED']) && validate_ip($_SERVER['HTTP_X_FORWARDED']))
                return $_SERVER['HTTP_X_FORWARDED'];
            if (!empty($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']) && validate_ip($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']))
                return $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
            if (!empty($_SERVER['HTTP_FORWARDED_FOR']) && validate_ip($_SERVER['HTTP_FORWARDED_FOR']))
                return $_SERVER['HTTP_FORWARDED_FOR'];
            if (!empty($_SERVER['HTTP_FORWARDED']) && validate_ip($_SERVER['HTTP_FORWARDED']))
                return $_SERVER['HTTP_FORWARDED'];

            // return unreliable ip since all else failed
            return $_SERVER['REMOTE_ADDR'];
        }

        $url = "http://ipinfo.io/".get_ip_address()."/json";

        $json = file_get_contents($url);

        $obj = json_decode($json);

请检查此http://screencast.com/t/E9mlGvUt8J

1 个答案:

答案 0 :(得分:3)

您没有validate_ip()函数。 要在php中验证IP地址,您可以使用: filter_var($ip_a, FILTER_VALIDATE_IP)