输出国家代码到控制台

时间:2017-09-27 00:48:25

标签: javascript php

您好我正在尝试将国家/地区代码输出到控制台或通过javascript,以便我可以进行一些条件格式化。继承我的代码:

<?php
  $ip = $_SERVER['REMOTE_ADDR'];
  $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}"));
  echo("<script>console.log('PHP: ".json_encode($details->country)."');
  </script>");
?>

我在控制台中的输出是PHP: null

更新

解释我的目标: 我有一个在中国被封锁的wp网站。我有几个服务,我认为是问题,包括:

  • Google Analytics
  • Google recaptcha
  • Google地图
  • Google字体
  • Vimeo的

我想检测国家/地区代码然后如果它的中文然后不在php服务器端显示脚本/ css。

谢谢,

4 个答案:

答案 0 :(得分:0)

你想要做的jQuery版本怎么样? 在我看来,它比PHP版本容易得多。

&#13;
&#13;
$.getJSON("https://ipinfo.io/",
    function(data){
      
       // show all options from data object
       //console.log(data);
       
       var country = data.country;
       var city = data.city;
       var loc = data.loc;
       var ip = data.ip
       
       var details = "<h1>"+ip+"</h1>"+"<br>COUNTRY: "+country+"<br>CITY: "+city+"<br>LOC: "+loc;
       
       $("#details").html(details);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div id="details"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

到目前为止,您的代码没有问题。 (您可以使用硬编码的IP地址进行检查,例如8.8.8.8

您正在localhost下测试您的代码,因此$_SERVER['REMOTE_ADDR']将返回本地IP地址而不是公共IP。

网站ipinfo.io无法使用本地IP地址,因此会响应{"ip":"192.xxx.xx.x","bogon":true}之类的内容。因此,响应中没有名为country的属性,这意味着null

如果您将代码部署到&#34;真实&#34;服务器(具有公共IP地址)然后它将工作。

答案 2 :(得分:0)

使用ipinfo.io的官方PHP客户端库:https://github.com/DavidePastore/ipinfo

<?php   
    // Initialize ipinfo 
    $ipInfo = new DavidePastore\Ipinfo\Ipinfo(array(
        "token" => "your_api_key" 
    ));

    $ip = $_SERVER['REMOTE_ADDR'];

    //Get all the properties
    $host = $ipInfo->getFullIpDetails($ip);

    // Output Country to JavaScript Console
    echo("<script>console.log('PHP: ".$host->getCountry()."');</script>");
?>

答案 3 :(得分:-1)

您需要从网址中删除大括号。

$details = json_decode(file_get_contents("http://ipinfo.io/$ip"));