function ip_info($ip = NULL,$purpose = "location",$deep_detect = TRUE) {
$output = NULL;
if (filter_var($ip,FILTER_VALIDATE_IP) === FALSE) {
$ip = $_SERVER["REMOTE_ADDR"];
if ($deep_detect) {
if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'],FILTER_VALIDATE_IP))
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
if (filter_var(@$_SERVER['HTTP_CLIENT_IP'],FILTER_VALIDATE_IP))
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
}
$purpose = str_replace(array("name","n","t"," ","-","_"),NULL,strtolower(trim($purpose)));
$support = array("country","countrycode","state","region","city","location","address");
$continents = array(
"AF" => "Africa",
"AN" => "Antarctica",
"AS" => "Asia",
"EU" => "Europe",
"OC" => "Australia (Oceania)",
"NA" => "north America",
"SA" => "South America"
);
if (filter_var($ip,FILTER_VALIDATE_IP) && in_array($purpose,$support)) {
$ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=" . $ip));
if (@strlen(trim($ipdat->geoplugin_countryCode)) == 2) {
switch ($purpose) {
case "location":
$output = array(
"city" => @$ipdat->geoplugin_city,
"state" => @$ipdat->geoplugin_regionName,
"country" => @$ipdat->geoplugin_countryName,
"country_code" => @$ipdat->geoplugin_countryCode,
"continent" => @$continents[strtoupper($ipdat->geoplugin_continentCode)],
"continent_code" => @$ipdat->geoplugin_continentCode
);
break;
case "address":
$address = array($ipdat->geoplugin_countryName);
if (@strlen($ipdat->geoplugin_regionName) >= 1)
$address[] = $ipdat->geoplugin_regionName;
if (@strlen($ipdat->geoplugin_city) >= 1)
$address[] = $ipdat->geoplugin_city;
$output = implode(",",array_reverse($address));
break;
case "city":
$output = @$ipdat->geoplugin_city;
break;
case "state":
$output = @$ipdat->geoplugin_regionName;
break;
case "region":
$output = @$ipdat->geoplugin_regionName;
break;
case "country":
$output = @$ipdat->geoplugin_countryName;
break;
case "countrycode":
$output = @$ipdat->geoplugin_countryCode;
break;
}
}
}
return $output;
}
?>
如何使用:
示例1:获取访客IP地址详细信息
echo ip_info("Visitor","Country"); // India
echo ip_info("Visitor","Country Code"); // IN
echo ip_info("Visitor","State"); // Andhra Pradesh
echo ip_info("Visitor","City"); // Proddatur
echo ip_info("Visitor","Address"); // Proddatur,Andhra Pradesh,India
print_r(ip_info("Visitor","Location")); // Array ( [city] => Proddatur [state] => Andhra Pradesh [country] => India [country_code] => IN [continent] => Asia [continent_code] => AS )
?>
示例2:获取任何IP地址的详细信息。[支持IPV4和IPV6]
echo ip_info("173.252.110.27","Country"); // United States
echo ip_info("173.252.110.27","Country Code"); // US
echo ip_info("173.252.110.27","State"); // California
echo ip_info("173.252.110.27","City"); // Menlo Park
echo ip_info("173.252.110.27","Address"); // Menlo Park,California,United States
print_r(ip_info("173.252.110.27","Location")); // Array ( [city] => Menlo Park [state] => California [country] => United States [country_code] => US [continent] => north America [continent_code] => NA )
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。