ThinkPHPプロジェクトでは、サーバー側から https://my.ipin.io/info を呼び出すことで、外部インターネットへアクセスする際のサーバー出口IPを確認できます。これは運用診断やプロキシ確認に適しています。
APIの説明
サーバー側呼び出しはサーバーの出口IPを確認し、公開ネットワーク上で見えるIP、国、地域、都市を返します。
{"ip":"185.220.236.7","country":"TW","region":"Taiwan","city":"Taipei"}
利用シーン
これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。
- これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。
- ThinkPHPでサーバー出口IPを確認する方法
- APIの説明
- SEOとUXの推奨事項
実装ロジック
実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
- 実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
- サーバー側呼び出しはサーバーの出口IPを確認し、公開ネットワーク上で見えるIP、国、地域、都市を返します。
- 以下の例はすべて
https://my.ipin.io/infoを直接使用し、コメントと画面文言も現地語化しています。 - デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。
コード例
以下の例はすべて https://my.ipin.io/info を直接使用し、コメントと画面文言も現地語化しています。
ThinkPHP Controller
<?php
namespace app\controller;
use app\BaseController;
class IpController extends BaseController
{
public function server()
{
$default = [
'ip' => '不明',
'country' => '不明',
'region' => '不明',
'city' => '不明',
];
try {
// サーバー側から /info を呼び出し、サーバー出口IPを確認します。
$json = @file_get_contents('https://my.ipin.io/info');
$data = json_decode($json, true);
$info = is_array($data) ? array_merge($default, $data) : $default;
} catch (\Throwable $e) {
$info = $default;
}
return view('server_ip', ['info' => $info]);
}
}
server_ip.html
<div class="ip-card">
<h2>サーバー出口IP情報</h2>
<p>IP:{$info.ip|default='不明'}</p>
<p>Country:{$info.country|default='不明'}</p>
<p>Region:{$info.region|default='不明'}</p>
<p>City:{$info.city|default='不明'}</p>
</div>
SEOとUXの推奨事項
デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。
よくあるミス
以下の問題は、記事の正確性、コードの実用性、API説明の信頼性に影響します。
- 以下の問題は、記事の正確性、コードの実用性、API説明の信頼性に影響します。
- デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。
- 実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
- これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。
まとめ
サーバー側呼び出しはサーバーの出口IPを確認し、公開ネットワーク上で見えるIP、国、地域、都市を返します。
よくある質問
以下の質問はこの記事専用に整理しており、実装内容と直接関係しています。
質問:なぜリクエスト元を区別する必要がありますか?
回答:サーバー呼び出しはサーバーを表し、ブラウザ呼び出しは訪問者を表すためです。
質問:なぜデフォルト内容が必要ですか?
回答:SEO、初回表示、API失敗時の安定性を守るためです。
質問:国を追加できますか?
回答:はい。マッピング表に国コードを追加します。
質問:バックエンドの動作は変わりますか?
回答:別途サーバーロジックを追加しない限り、表示だけが変わります。
質問:APIが失敗したらどうなりますか?
回答:デフォルト内容、リンク、メッセージを維持します。