您好我正在尝试将国家/地区代码输出到控制台或通过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网站。我有几个服务,我认为是问题,包括:
我想检测国家/地区代码然后如果它的中文然后不在php服务器端显示脚本/ css。
谢谢,
答案 0 :(得分:0)
你想要做的jQuery版本怎么样? 在我看来,它比PHP版本容易得多。
$.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;
答案 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"));