PHPによる5ステップでのグローバルIP取得 – Japanシーモア

PHPによる5ステップでのグローバルIP取得

PHPを使ったグローバルIP取得の流れを図解したイラストPHP
この記事は約7分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

このサービスは複数のSSPによる協力の下、運営されています。

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、PHPを使ってグローバルIPを取得する方法が理解できるようになります。

初心者向けに分かりやすく説明しますので、PHPについて初めて学ぶ方も安心してご覧ください。

●PHPとは

PHPは、Web開発に広く用いられるサーバーサイドスクリプト言語です。

HTMLに直接埋め込むことが可能で、動的なウェブページの作成に適しています。

●グローバルIPとは

グローバルIPとは、インターネット上で一意に識別されるIPアドレスのことを指します。

一般的にはインターネットサービスプロバイダ(ISP)から割り当てられます。

●PHPによるグローバルIPの取得法

PHPを用いてグローバルIPを取得するための方法を、5つの手順に分けてご紹介します。

初心者でもわかりやすいように、詳細な説明と具体的なサンプルコードを添えて解説します。

○手順1:サーバー環境の確認

まずは、グローバルIPを取得するためのPHPスクリプトを実行するサーバー環境を確認しましょう。

PHPがインストールされ、適切に設定されていることが必要です。

下記のコードを利用して、PHPのバージョン情報を確認できます。

// PHPのバージョンを表示する
echo '現在のPHPバージョン: ' . phpversion();

○手順2:$_SERVER[‘REMOTE_ADDR’]の利用

次に、PHPの組み込み変数$_SERVER['REMOTE_ADDR']を使って、クライアントのIPアドレスを取得します。

この変数は、現在のスクリプトにアクセスしているユーザーのIPアドレスを格納しています。

// クライアントのIPアドレスを取得する
$clientIP = $_SERVER['REMOTE_ADDR'];

// IPアドレスを表示する
echo 'あなたのIPアドレス: ' . $clientIP;

○手順3:例外処理

しかし、$_SERVER['REMOTE_ADDR']を使ってIPアドレスを取得する場合、一部の環境では期待した結果が得られないことがあります。

そのため、例外処理を加えることが重要です。

// クライアントのIPアドレスを取得する
if (!empty($_SERVER['REMOTE_ADDR'])) {
    $clientIP = $_SERVER['REMOTE_ADDR'];
} else {
    // IPアドレスが取得できない場合の処理
    $clientIP = "IPアドレスの取得に失敗しました";
}

// IPアドレスを表示する
echo 'あなたのIPアドレス: ' . $clientIP;

このコードでは、まず$_SERVER['REMOTE_ADDR']が空でないかを確認しています。

空でなければその値を$clientIPに格納し、空の場合はエラーメッセージを格納します。

○手順4:テストコードの作成

上記のコードが正しく動作するかを確認するために、テストコードを作成します。

下記のコードは、手順2と手順3で説明したIP取得コードを用いたテストコードの例です。

function testGetClientIP() {
    $expectedIP = '192.0.2.0'; // 期待するIPアドレス
    $_SERVER['REMOTE_ADDR'] = $expectedIP; // $_SERVER変数を設定

    $clientIP = getClientIP(); // getClientIPはあなたが作成するIP取得関数

    // 取得したIPアドレスが期待するIPアドレスと一致するかを確認
    assert($clientIP === $expectedIP, 'IPアドレスの取得に失敗しました');
}

// テストを実行
testGetClientIP();

○手順5:実際の利用例

最後に、取得したIPアドレスを実際に利用する例を見てみましょう。

例えば、特定のIPアドレスからのアクセスを制限する場合などに活用できます。

// クライアントのIPアドレスを取得する
$clientIP = getClientIP();

// 特定のIPアドレスを制限する
if ($clientIP === '192.0.2.0') {
    echo 'このIPアドレスからのアクセスは制限されています';
} else {
    echo 'ようこそ!';
}

以上が、PHPによるグローバルIPの取得法の具体的な手順となります。

●PHPによるグローバルIP取得の注意点と対処法

前回、PHPでグローバルIPを取得する基本的な手順を説明しましたが、その際に考慮しなければならない注意点とそれへの対処法について詳しく説明します。

まず大切なのは、$_SERVER['REMOTE_ADDR']が常に信頼できる情報を提供するわけではないということです。

例えば、ユーザーがプロキシサーバーを通じてアクセスしている場合、$_SERVER['REMOTE_ADDR']はプロキシサーバーのIPアドレスを返します。

これは実際のクライアントのIPアドレスとは異なります。また、ロードバランサーを経由するときも同様です。

このようなケースを対処するためには、他の$_SERVER変数、$_SERVER['HTTP_X_FORWARDED_FOR']$_SERVER['HTTP_CLIENT_IP']を利用することが一般的です。

// クライアントのIPアドレスを取得するための関数
function getClientIP() {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
        // HTTP_CLIENT_IPをチェック
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        // HTTP_X_FORWARDED_FORをチェック
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        // REMOTE_ADDRをチェック
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

このコードでは、まず$_SERVER[‘HTTP_CLIENT_IP’]をチェックし、値が存在すればそれをクライアントのIPアドレスとします。

次に、$_SERVER[‘HTTP_X_FORWARDED_FOR’]をチェックし、こちらの値が存在すればそれをクライアントのIPアドレスとします。

どちらも存在しない場合は、最終的に$_SERVER[‘REMOTE_ADDR’]を利用します。

●PHPによるグローバルIP取得のカスタマイズ方法

グローバルIPの取得方法について基本的な手順と注意点を理解したら、次はそれをカスタマイズする方法を学びましょう。

例えば、特定のIPアドレス範囲からのアクセスをブロックしたい場合などに有用です。

// クライアントのIPアドレスを取得する
$clientIP = getClientIP();

// 特定のIPアドレス範囲からのアクセスをブロックする
$blockIPRange = '192.0.2.'; // ブロックしたいIPアドレス範囲
if (strpos($clientIP, $blockIPRange) === 0) {
    echo 'このIPアドレス範囲からのアクセスは制限されています';
} else {
    echo 'ようこそ!';
}

上記のコードは、クライアントのIPアドレスが特定の範囲に含まれる場合、アクセスを制限しています。

具体的には、$clientIPが$blockIPRangeで始まる場合、つまりIPアドレスが192.0.2.0から192.0.2.255の範囲内にある場合、アクセスが制限されます。

これを利用すれば、特定のIPアドレス範囲からのアクセスを制御することが可能です。

まとめ

以上がPHPによるグローバルIP取得の詳細なガイドでした。

基本的な取得方法から、注意点、カスタマイズ方法までを一つ一つ詳しく説明しました。

この内容を理解し、実際のプログラミングに活用してみてください。

さらなる学習と実践を通じて、PHPでのグローバルIPの取得や利用がスムーズに行えるようになることを願っています。