繁体   English   中英

PHP:具有API的真实IP地址

[英]PHP: real IP address with API

您好,我使用此api: http : //ipapi.co/json来获得localhost(127.0.0.1)中的国家/地区,城市和真实IP地址,但工作正常,但是当我将代码放入网站时,我的代码未显示地址客户端,但服务器地址我该如何解决?

我可以用$_SERVER['REMOTE_ADDR'];获得客户端的IP地址$_SERVER['REMOTE_ADDR']; 但是我需要这个api来获得国家和城市: http : //ipapi.co/json

Function TTT() {
    $ip = false;
    $city = false;
    $region = false;
    $country = false;
    $country_code = false;

    if($json = @file_get_contents("http://www.geoplugin.net/json.gp")) {
      $obj = json_decode($json);
      if(isset($obj->geoplugin_request) && $obj->geoplugin_request != false) {
        $ip = "IP: ". $obj->geoplugin_request. "</br>";
      }
      if(isset($obj->geoplugin_city) && $obj->geoplugin_city != false) {
        $city = "City: ". $obj->geoplugin_city. "</br>";
      }
      if(isset($obj->geoplugin_city) && $obj->geoplugin_city != false) {
        $region = "Region: ". $obj->geoplugin_city. "</br>";
      }
      if(isset($obj->geoplugin_countryName) && $obj->geoplugin_countryName != false) {
        $country = "Country: ". $obj->geoplugin_countryName. "</br>";
      }
      if(isset($obj->geoplugin_countryCode) && $obj->geoplugin_countryCode != false) {
        $country_code = "Country Code: ". $obj->geoplugin_countryCode. "</br>";
      }

      return $ip. $city. $region. $country. $country_code;
    }
}

echo TTT();

http://ipapi.co/json使用api

$obj = json_decode($json);

将此JSON放入关联数组中:

{
    "ip": "00.00.00.00",
    "city": "Atlanta",
    "region": "Georgia",
    "country": "US",
    "postal": "31532",
    "latitude": 34.461,
    "longitude": -85.9877,
    "timezone": "America/New_York"
}

像这样访问城市和地区:

if(isset($obj->city) && $obj->city != false) {
    $city = "City: ". $obj->city. "</br>";
  }
if(isset($obj->region) && $obj->region != false) {
    $region = "Region: ". $obj->region. "</br>";
  }

看来您没有使用最初声明的API。

您必须在对远程服务的请求中包括访问者的IP。 根据我的测试,您可以将客户端IP地址放在如下网址中:

function TTT() {
    $ip = false;
    $city = false;
    $region = false;
    $country = false;
    $country_code = false;

    if($json = @file_get_contents("http://ipapi.co/" . $_SERVER['REMOTE_ADDR'] . "/json")) {
      $obj = json_decode($json);
      if(isset($obj->ip) && $obj->ip != false) {
        $ip = "IP: ". $obj->ip. "</br>";
      }
      if(isset($obj->city) && $obj->city != false) {
        $city = "City: ". $obj->city. "</br>";
      }
      if(isset($obj->region) && $obj->region != false) {
        $region = "Region: ". $obj->region. "</br>";
      }
      if(isset($obj->country) && $obj->country != false) {
        $country = "Country: ". $obj->country. "</br>";
      }

      return $ip. $city. $region. $country;
    }
}

echo TTT();

注意:该API的响应如下:

{
  "ip": "8.8.8.8",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "postal": "94035",
  "latitude": 37.386,
  "longitude": -122.0838,
  "timezone": "America/Los_Angeles"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM