【问题标题】:Getting country name from IP php with iptolatlng.com使用 iptolatlng.com 从 IP php 获取国家/地区名称
【发布时间】:2013-11-05 08:36:00
【问题描述】:

我想要做的是从 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 请帮我, 提前致谢!

【问题讨论】:

  • 首先 - 您的语法有错误(在 URL 和行尾都不需要 `)。更正您的错误并发布 phpfiddle 发布的内容:([link]phpfiddle.org/main/code/b3f-gvi[/link]。然后,如果它在您的远程服务器上得到更正,并且您仍然没有输出,则可能会发生错误并且您已将 PHP 标志“display_errors”设置为 0 . 在这种情况下,请尝试将其粘贴到您的代码之前:ini_set('display_errors', 1); error_reporting(E_ALL);
  • @Kleskowy 感谢您指出,但这只是我在这里复制语法时的一个错误。我已经制作了一个 phpfile 这是链接,基本上这就是我所做的! phpfiddle.org/main/code/mih-iqn
  • @Kleskowy 实际上我将您的代码复制到了我的服务器中,但它仍然无法正常工作。即使我的代码和你的代码在小提琴中都可以正常工作,它也应该在远程服务器上工作,对吗?

标签: php ip ip-address ip-geolocation


【解决方案1】:

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

【讨论】:

  • $ip = $_SERVER['REMOTE_ADDR'];就像那样。当我回显这个时,我会毫无问题地得到我的 IP 地址
  • 那么它应该调用该 IP 的 iptolatng 页面,并将其存储在详细信息中。并且 $details 在远程服务器上运行时不包含任何内容?
  • 是的!这就是问题!
【解决方案2】:

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

【讨论】:

  • 我不想这样做,我已经将我的脚本上传到远程服务器,这就是我正在测试的地方。在这里检查我的小提琴:phpfiddle.org/main/code/mih-iqn
  • 我已经在不同的服务器上上传并测试了它,它工作正常。这可能是服务器问题吗?我现在高度怀疑,尽管 iPages 客户支持不断告诉我这是服务器问题。
  • 尝试通过删除小提琴末尾的 ?ip= 参数来测试这一点。尝试:phpfiddle.org/main/code/v93-8er 猜测是您的服务器由于某种原因存在 REMOTE_ADDR 问题
  • 您可以打印 $_SERVER['REMOTE_ADDR'] 并分享该打印输出的内容吗?
【解决方案3】:

这里有两个可以工作的插件

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

还有这个:http://www.geoplugin.com/

我更喜欢第二个

【讨论】:

    【解决方案4】:

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

    有了这个,您不必为了结果而去外部网络服务器,也不会依赖于第 3 方服务的停机时间。

    【讨论】:

      猜你喜欢
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2017-01-28
      • 2016-09-03
      • 2017-01-05
      • 2012-03-08
      • 2020-05-20
      相关资源
      最近更新 更多