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;が、そうでない場合はそれが問題になります。

それが問題ではないと仮定して....

2 つの可能性:

  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 に答える