通过iptolatlng.com从IP php获取国家名称

通过iptolatlng.com从IP php获取国家名称,php,ip,ip-address,ip-geolocation,Php,Ip,Ip Address,Ip Geolocation,我要做的是从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-&g

我要做的是从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('***.***.***.**');
它工作得很好

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

我想既然我在服务器上,我应该试试
$\u服务器['REMOTE\u ADDR']太多,但这也不会显示任何结果。
我怀疑这也可能是一个服务器错误,我是在iPage托管的
请帮帮我,

提前谢谢

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

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

这里有两个插件可以工作

还有这个:


我更喜欢第二个

不直接回答您的问题,但可能会有所帮助-为什么不使用geoip-PECL扩展?


这样,您就不必到外部web服务器获取结果,也不必依赖第三方服务停机时间。

$ip=$\u server['REMOTE\u ADDR';是这样的。当我回显这个消息时,我得到了我的IP地址,没有任何问题,然后它应该调用该IP的iptolatng页面,并将其存储在详细信息中。在远程服务器上运行时,$details在调用后不包含任何内容?是!!这就是问题所在!!首先,您的语法有错误(URL和行尾都不需要)。更正错误并发布phpfiddle发布的内容:([link]。然后,如果在远程服务器上更正了错误,并且您仍然没有输出,则可能会发生错误,并且您已将PHP标志“display_errors”设置为0。在这种情况下,请尝试在代码之前粘贴此标志:ini_set('display_errors',1);error_reporting(E_ALL)@Kleskowy谢谢你指出,但这只是我在这里复制语法时的一个错误。我做了一个phpfidle这是链接,基本上我就是这么做的!@Kleskowy实际上我把你的代码复制到了我的服务器中,但仍然不起作用。尽管我的代码和你的代码在fiddle上都很好,但它应该在远程服务器中工作太对了?我不是想这么做,我把我的脚本上传到了一个远程服务器,我就是在那里测试的。检查我的小提琴:我已经上传并在另一个服务器上测试了这个,它工作正常。这可能是服务器问题吗?我现在高度怀疑,即使iPages的客户支持不断告诉我这是一个服务器问题。请尝试通过删除小提琴末端的?ip=参数来测试此问题。尝试:猜测您的服务器由于某种原因与REMOTE\u ADDR存在问题。您可以打印$\u server['REMOTE\u ADDR']并共享该打印输出的内容吗?