我想通过他们的IP获取访问者国家/地区…现在我正在使用它(http://api.hostip.info/country.php?ip=
......)
这是我的代码:
<?php
if (isset($_SERVER['HTTP_CLIENT_IP']))
{
$real_ip_adress = $_SERVER['HTTP_CLIENT_IP'];
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$real_ip_adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$real_ip_adress = $_SERVER['REMOTE_ADDR'];
}
$cip = $real_ip_adress;
$iptolocation = 'http://api.hostip.info/country.php?ip=' . $cip;
$creatorlocation = file_get_contents($iptolocation);
?>
好吧,它工作正常,但事实是,这将html" target="_blank">返回国家代码(例如美国或加拿大),而不是整个国家名称(例如美国或加拿大)。
那么,hostip.info可以提供这种方法吗?
我知道我可以编写一些代码,最终将这两个字母转换为整个国家/地区名称,但是我懒得编写包含所有国家/地区的代码…
PS:出于某种原因,我不想使用任何现成的CSV文件或任何可以为我获取此信息的代码,例如ip2country现成的代码和CSV。
试试这个简单的PHP函数。
<?php
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地址的详细信息
<?php
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]
<?php
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 )
?>
本文向大家介绍php获取访问者IP地址汇总,包括了php获取访问者IP地址汇总的使用技巧和注意事项,需要的朋友参考一下 //方法1: //方法2: //方法3: //方法4: //方法5: //方法6: 以上所述就是本文的全部内容了,希望对大家学习php能够有所帮助。
问题内容: 我正在建立一个网站,用户可以使用使用Python(在我的情况下为2.6)的Flask微框架(基于Werkzeug)登录和下载文件。 我需要获得用户登录时的IP地址(出于记录目的)。有谁知道如何做到这一点?当然有办法用Python吗? 问题答案: 请参阅有关如何访问Request对象,然后从同一Request对象(即attribute)获取文档。 代码示例 有关更多信息,请参见Werkz
本文向大家介绍通过PHP实现获取访问用户IP,包括了通过PHP实现获取访问用户IP的使用技巧和注意事项,需要的朋友参考一下 在php中自带了一个非常的简单的获取IP地址的全局变量,很多初学都获取IP都使用它了,但是对于这些我们一般用法是满足了,但是对于要求高精度这个函数还是不行的。 这个是最简单的方法,对于开了透明代理之类的是没有办法的,如果内网访问也不能读取正确的外网IP,不过很省力就是了: $
本文向大家介绍Python django框架应用中实现获取访问者ip地址示例,包括了Python django框架应用中实现获取访问者ip地址示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python django框架应用中实现获取访问者ip地址。分享给大家供大家参考,具体如下: 在django官方文档中有一段对request.META的解释: HttpRequest.META A
问题内容: 我已经找到了针对Objective-C的答案,但是林先生很难迅速做到这一点。 我用它来获取当前位置的国家代码: 但是,如何将该国家/地区代码转换为国家/地区名称,例如在此示例中,将“ US”转换为“ United States”? 问题答案: 迅捷3
问题内容: 问题: 是否有一个javascript(客户端)代码来获取访问者的国家/语言代码,该代码是准确的并且是跨“现代”浏览器的?我要寻找的结果一样,,,等。 我试过了 : 并在同一台计算机和同一位置安装了Chrome和Firefox。 问题答案: 正如您所链接的问题之一所言,这是不可靠的。 问这个问题的原因很多,但是您仍在搜索中说明有关该问题的信息。 纯粹 在客户端进行语言检测几乎没有可靠的