使用 iptolatlng.com 从 IP php 获取国家/地区名称


Getting country name from IP php with iptolatlng.com

我要做的是从IP地址中获取国家/地区名称。我创建了一个名为 General 的类,在该类中我有一个名为 GetIPCountry($ip) 的函数,它从 iptolatlng.com 返回 jason 解码数组

public function GetIPCountry($ip){
    $details = json_decode(file_get_contents("http://www.iptolatlng.com?`ip=".urlencode($ip)));`
    return $details->countryFullName;
}

当我在本地主机中像这样发送我的 IP 时:

$country = $general->GetIPCountry('***.***.***.**');

它工作得很好!

但是当我发送上传相同的文件并在我的服务器中运行它时,没有输出。

我想因为我在服务器上,我也应该尝试$_SERVER['REMOTE_ADDR'];,但这也没有显示任何结果。我怀疑这也可能是服务器错误,我托管在iPage上请帮助我,提前感谢!

只是一个简单的问题:当您在远程服务器上托管它时,$ip包含什么?从本质上讲,如果您要打印出$ip,它是否包含您的 IP 地址?这将帮助您确定是否是获取所连接计算机的IP地址的问题。

您是否发送 127.0.0.1 作为 IP? 如果您向服务询问IP 127.0.0.1的位置,它将无法告诉您您的位置。 从本地主机运行您的代码时遇到了这个问题。

这里有两个插件可以工作

http://taylorlopes.com/?p=636

而这个:http://www.geoplugin.com/

我更喜欢第二个

不直接回答您的问题,但可能会有所帮助 - 为什么不使用 geoip PECL 扩展?http://www.php.net/manual/en/function.geoip-country-code-by-name.php

有了这个,您就不必去外部Web服务器获得结果,也不会依赖于第三方服务停机时间。