現在の位置: ホーム> 最新記事一覧> PHPで実際のIPアドレスを取得するための実用的な方法とコードの例

PHPで実際のIPアドレスを取得するための実用的な方法とコードの例

gitbox 2025-08-10

序文

PHP開発中、訪問者の実際のIPアドレスを取得することは一般的な要件です。ただし、複雑なネットワーク環境により、IPアドレスの取得は、プロキシサーバーやロードバランシングなどの要因の影響を受けることがよくあります。この記事では、実際のIPを取得し、コードの例を使用して、開発者がクライアントIPを正しく取得できるようにさまざまな方法を模索します。

HTTPヘッダー情報を取得します

HTTPリクエストヘッダーにはクライアントのIP情報が含まれており、最も基本的な変数はremote_addrで、クライアントのIPを記録するために使用されます。

remote_addrの値を取得します

$ip = $_SERVER['REMOTE_ADDR'];
echo "IP Address: $ip";

このコードは、現在の訪問者のIPアドレスを直接出力できますが、 Remote_Addrの値は、実際のクライアントIPではなく、プロキシサーバーまたはロードバランサーのIPである可能性があることに注意する必要があります。

X-Forwarded-forヘッダー情報を取得します

プロキシによって引き起こされる問題を解決するために、多くのプロキシサーバーは、httpヘッダーのx-forwarded-forを追加して、実際のクライアントIPを記録します。

 $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
echo "IP Address: $ip";

ただし、すべてのエージェントがこのヘッダーを渡すわけではなく、偽造される可能性があるため、完全に依存することはできません。

プロキシライブラリを使用して、精度を向上させます

複雑な環境の場合、専用のPHPプロキシクラスライブラリを使用することは、IP獲得の精度を改善する効果的な方法です。これらのクラスライブラリは、さまざまなHTTPヘッダー情報を包括的に分析します。

CloudFlareを使用して、実際のIPアドレスを取得します

WebサイトがCloudFlareプロキシの下に展開されている場合、対応するクラスライブラリを使用して、実際のIPを正確に取得できます。

 require_once 'vendor/autoload.php';
use Cloudflare\IpRewrite;
$ipRewrite = new IpRewrite();
$ip = $ipRewrite->getIp();
echo "IP Address: $ip";

このライブラリは、CloudFlareの特別なヘッダー情報を解析することにより、実際のクライアントIPアドレスが取得されることを保証します。

他のプロキシライブラリを使用して、実際のIPを取得します

CloudFlareに加えて、Jshrink/Proxy-Testなどのオープンソースプロキシライブラリがあります。これは、さまざまなHTTPヘッダーを分析し、IPを正確に取得するのに役立ちます。

 require_once 'vendor/autoload.php';
use JShrink\ProxyTest;
$proxyTest = new ProxyTest();
$ip = $proxyTest->getIp();
echo "IP Address: $ip";

要約します

訪問者の実際のIPを取得することは、PHP開発における一般的な要件です。 remote_addrを直接読むのは簡単ですが、プロキシ環境では十分に正確ではありません。 X-Forwarded-Forヘッダーを使用するか、プロのエージェントライブラリを使用すると、精度を効果的に向上させることができます。 IPアドレスを使用する場合、ユーザーのプライバシーを保護することに注意を払い、この情報を合理的かつ合法的に使用する必要があります。