ホームページ > バックエンド開発 > PHPチュートリアル > PHPはIPアドレスクエリ機能を実装します

PHPはIPアドレスクエリ機能を実装します

王林
リリース: 2023-06-23 06:20:01
オリジナル
4145 人が閲覧しました

インターネットの急速な発展に伴い、IP アドレスはネットワーク通信に不可欠な部分になりました。 IP アドレス情報は、ネットワーク セキュリティの監視、トラフィック管理、ターゲットを絞った電子商取引広告において非常に重要です。したがって、ユーザーが IP アドレス/ドメイン名情報を簡単に照会できるようにするために、多くの Web サイトでは IP アドレス照会機能が提供されています。この記事では、読者の参考のために、PHP を使用して IP アドレスクエリ機能を実装する方法を紹介します。

1. IP アドレスとは何ですか?

IP アドレス (インターネット プロトコル アドレス) は、インターネット プロトコル (インターネット プロトコル) のアドレスであるネットワーク プロトコル アドレスです。ネットワーク上のすべてのデバイスが通信するには IP アドレスが必要です。 IP アドレスは 32 ビットの 2 進数で構成され、通常は 0 ~ 255 の範囲の 4 バイトに分割されます。たとえば、「192.168.0.1」は IP アドレスです。

2. IP アドレスの取得

PHP では IP アドレスを取得する方法が数多くありますが、一般的に使用されるのは次のとおりです:

  1. $_SERVER['REMOTE_ADDR ' ]:アクセスしてきたクライアントのIPアドレスを取得します。
  2. $_SERVER['HTTP_X_FORWARDED_FOR']: プロキシ サーバーによって転送されたクライアント IP アドレスを取得します。プロキシ サーバーを使用してアクセスすると、クライアントの実際の IP アドレスがプロキシ サーバーによって偽造される可能性があります。
  3. $_SERVER['HTTP_CLIENT_IP']: クライアントの IP アドレスを取得します。 HTTP_X_FORWARDED_FOR と同様に、これも偽造から保護する必要があります。

IP アドレスを取得する上記 3 つの方法の信頼性は環境によって異なるため、実際の状況に応じて適切な方法を選択する必要があります。

たとえば、次のコードは、HTTP_X_FORWARDED_FOR と HTTP_CLIENT_IP が存在するかどうかを検出して、現在のアクセス IP 情報を取得します。

function getIP(){
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }else{
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}
ログイン後にコピー

IP アドレスはさまざまな形式で提供されるため、処理を容易にするためにデジタル形式に変換できます。次のコードは、IP アドレスを 32 ビットの符号なし整数に変換します。

function ip2long(string $ip): int {
    return sprintf("%u", ip2long($ip));
}
ログイン後にコピー

3. IP アドレスのクエリ

IP アドレスのクエリ プロセス中に、外部 API にアクセスして、私たちが必要とするデータ。この記事では、Taobao API を例として、PHP を使用して IP アドレス情報を取得する方法を紹介します。

まず、タオバオのオープンプラットフォームアカウントを登録してAPIインターフェースを申請し、APIアクセスアドレスとAppKeyを取得します。

次に、次のコードを使用して、API を通じて IP アドレスの位置情報とオペレーター情報を取得できます。

function getIpInfo($ip, $appkey){
    $url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.trim($ip).'&soft='.$appkey;
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $output = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($output,true);
    return $data;
}
ログイン後にコピー

上記のコードは、まず API インターフェイスのアドレスとパラメーターを結合し、次に CURL ライブラリを使用して HTTP リクエストを開始し、最後に JSON 形式のデータを返します。この関数を呼び出して IP 情報を取得します。

4. 完全なコード実装

以下は完全な PHP コード実装です:

function getIP(){
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }elseif(isset($_SERVER['HTTP_CLIENT_IP'])){
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }else{
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

function ip2long(string $ip): int {
    return sprintf("%u", ip2long($ip));
}

function getIpInfo($ip, $appkey){
    $url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.trim($ip).'&soft='.$appkey;
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $output = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($output,true);
    return $data;
}

$ip = getIP();
$appkey = 'YOUR_APPKEY'; //替换为自己的AppKey
$info = getIpInfo($ip, $appkey);
print_r($info);
ログイン後にコピー

上記のコードは、アクセス IP アドレスの取得と、IP アドレスのデジタル形式への変換を実装しています。 、IP アドレス情報のクエリおよびその他の機能。読者はそれを自分のウェブサイトに適用し、対応する二次開発を行うことができます。

つまり、IP アドレス照会機能は、ネットワーク アプリケーションにおいて広範な応用価値を持っています。 PHP でこの関数を実装すると、クエリがより便利で高速になります。サードパーティ API を使用する場合は、情報の悪用を避けるために、関連する法規制とデータ セキュリティ対策に従う必要があることに注意してください。

以上がPHPはIPアドレスクエリ機能を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート