0

我确定这与其他问题类似,但我已经尝试了解决方案,但无法让它发挥作用。

我正在尝试获取 IP 地址的位置、解码 json 并打印它。我实际上打算将其放入数据库中,但我什至不确定为什么我无法将任何内容打印到屏幕上。

$ip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("http://api.hostip.info/get_json.php?ip=".$ip);
$local = json_decode($json,true);

谢谢。

4

2 回答 2

1

A. 当你的意思是I cant get anything to print to the screen.肯定你可以得到任何东西,因为你没有输出任何东西到屏幕上。

error_reporting(E_ALL);
$ip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("http://api.hostip.info/get_json.php?ip=".$ip);
$local = json_decode($json,true);

echo $local['city'] ;
print  $local['country_name'] ;

var_dump($local);

B. 这也意味着allow_url_include set to Off不允许file_get_contents从另一个域加载信息

于 2012-09-12T13:02:48.217 回答
0

首先,您提供的代码实际上并没有打印任何内容,这可以解释为什么您会出现空白屏幕。我假设您在echo $local;程序的后面会做类似的事情,但如果不是,那将是问题所在。

假设这不是问题......

两种可能:

  1. file_get_contents()正在返回错误。

  2. json_decode()正在返回错误。

首先,您应该在代码中添加一些额外的错误捕获,以确定哪个是问题所在。

如果您将 PHP 设置为不显示错误,请考虑将其打开,以便查看生成的任何错误。或者查看您的服务器日志以查看错误。

file_get_contents()如果 URL 无效,可能会失败。如果您的 PHP 安装设置为不允许通过文件处理函数访问 URL,它也可能会失败。如果是这种情况,您需要更改 php.ini 设置。如果你不能这样做,你将不得不通过不同的方法(例如Curl)加载文件。

json_decode()只有当它得到的字符串是无效的 JSON 时才可能失败。您应该检查 URL 的输出以确认它看起来正确,并检查它类似于 firebug 以确保它是有效的。

希望有帮助。

于 2012-09-12T13:13:15.557 回答