我要做的是从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服务器获得结果,也不会依赖于第三方服务停机时间。