ホームページ  >  記事  >  バックエンド開発  >  PHPでIPアドレスを取得する

PHPでIPアドレスを取得する

PHPz
PHPzオリジナル
2024-08-29 13:07:16679ブラウズ

「PHP で IP アドレスを取得する」を学習するには、まず IP アドレスを学習します。 IP アドレスまたはインターネット プロトコル アドレスは、ネットワークに接続されているすべてのシステムまたはデバイスが持つ数値アドレスまたはラベルであるアドレスです。 IP アドレスは、このようなすべてのデバイスに割り当てられます。これらのデバイスは、あらゆる種類の通信にインターネット プロトコルを使用します。

広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

IP バージョン

以下の点で IP バージョンについて説明します:

  • IP バージョンは、インターネット プロトコル ラベルのビットに従って定義されます。たとえば、以前のバージョンである IPv4 は、32 ビット数値のインターネット プロトコル アドレスを定義します。インターネットの成長に伴い、128 ビットの数値 IP ラベルを定義する IPv6 が登場しました。 IPv6 は 1995 年から今日まで使用されています。インターネット プロトコル アドレスは、人間が理解できる言語で記述されます。 IPv4 の例は 170.17.260.2 で、IPv6 の例は 2001:db8:2:1434:1:587:5:2 です。
  • インターネット プロトコル アドレスによって取得されるスペースはグローバルに管理されます。 Internet Assigned Numbers Authority と呼ばれるレジストリと他の 5 つの地域レジストリにより、インターネット プロトコル アドレスのスペース管理が可能になります。 IANA は、指定されたエリアまたは領域内のすべてのエンドユーザーおよび他のインターネット プロバイダーにインターネット プロトコル アドレスのスペースを割り当て、管理する責任があります。同様に、インターネット サービス プロバイダーのネットワークに接続されているすべてのデバイスには、一意のインターネット プロトコル アドレスが割り当てられます。
  • 頻繁には変更されない静的なインターネット プロトコル アドレスがあり、それらはサーバーに提供されます。インターネット サービス プロバイダーは、モデムを使用しているマシンに特定の一意のインターネット プロトコル アドレスを提供します。この IP アドレスはセッションに対して一意であり、次のセッションでは変更される可能性があります。

PHP で IP アドレスを識別して返す

セキュリティ上の理由から、サイトはサイト訪問者の IP アドレスを収集します。 PHP でこのアドレスを取得する簡単な方法があります。 PHP には、マシンの IP アドレスを返すのに役立つ特定の配列があります。配列は「$_SERVER」として知られています。これには、パス、ヘッダー、スクリプトの場所に関する情報が含まれています。 Web サーバーは、$_SERVER 配列に必要な情報を作成します。サーバーがアレイに必要なすべての情報を作成または提供しない場合があり、その一部が省略される場合があります。したがって、そのような場合に使用できる別の配列があります。 「SERVER_ADDR」と書きます。この配列は、スクリプトが実行されているサーバーの IP アドレスを返します。

PHP で IP アドレスを取得するために使用するメソッド

以下は、php で IP アドレスを取得するために使用される例です。

例 #1

最も簡単な方法は、$_SERVER を「REMOTE_ADDR」とともに使用することです。これにより、現在ページを表示しているユーザーの IP アドレスが返されます。

  • PHP でサーバーの IP アドレスを識別するために [‘REMOTE_ADDR’] を使用する例。

コード:

<?php
echo 'User IP - '.$_SERVER['REMOTE_ADDR'];
?>

出力:

PHPでIPアドレスを取得する

例 #2

「SERVER_ADDR」と呼ばれる別のメソッド。これもサーバーの IP アドレスを取得するために使用されます。

  • PHP でサーバーの IP アドレスを識別するために [‘SERVER_ADDR’] を使用する例。

コード:

<?php
// PHP program to retrieve server’s Internet Protocol address
// Creating a variable to store the server address
$ip_server = $_SERVER['SERVER_ADDR'];
// Displaying the retrieved address
echo "Server IP Address is: $ip_server";
?>

出力:

PHPでIPアドレスを取得する

上記のプログラムの説明: マシンがプロキシ経由で接続されていない場合、上記の配列 [$_SERVER] の例が役に立ちます。マシンがプロキシ サーバー経由でインターネットに接続されている場合、PHP の $_SERVER[‘REMOTE_ADDR’] は正しい IP アドレスを返しません。プロキシ サーバーとユーザーまたはクライアントのマシンの IP アドレスを返すだけです。この状況では、別の方法を使用して正しいアドレスを取得します。

例 #3

次の例は、マシンがプロキシ サーバーの背後に隠れている場合でも、正しい実際の IP アドレスを返すために使用されます。クライアントのシステムまたはマシンの正確な IP アドレスを取得するために使用できる追加の SERVER 変数ペアを使用します。これらは、HTTP_CLIENT_IP および HTTP_X_FORWARDED_FOR として知られています。

  • PHP でサーバーの IP アドレスを識別するために [‘HTTP_CLIENT_IP’] と [‘HTTP_X_FORWARDED_FOR’] を使用する例。

コード:

<?php
function RetrieveUserIP()
{
if(!empty($_SERVER['HTTP_CLIENT_IP']))
{
$address=$_SERVER['HTTP_CLIENT_IP'];
}
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$address=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$address=$_SERVER['REMOTE_ADDR'];
}
return $address;
}
echo 'User IP Address is'.RetrieveUserIP();
?>

出力:

PHPでIPアドレスを取得する

上記のコードの動作の流れを理解したい場合は、次のフローチャートを参照してください。

PHPでIPアドレスを取得する

上記プログラムの説明: IP アドレスを取得する上記の例では、2 つの変数 [‘HTTP_CLIENT_IP’] と [‘HTTP_X_FORWARDED_FOR’] を使用します。プログラムでは、HTTP_CLIENT_IP を使用してマシンから直接それを取得する最初の試みを行います。それが利用できない場合は、HTTP_X_FORWARDD_FOR を使用して「転送先」IP を試みます。両方の条件が null に該当する場合、REMOTE_ADDR 変数を使用して IP アドレスの取得を試みます。

注意事項

php で IP アドレスを取得する際に覚えておくべきポイントは次のとおりです:

1.上記のコードを実行すると、返された IP アドレスは::1 として表示されます。これはループバック アドレスとして知られており、実際には 127 回のゼロとそれに続く 1、つまり (0000…. 127 回….1) として表されます。文字にすると次のようになります。

PHPでIPアドレスを取得する

2.しかし、IPv6 では、この大きなラベルを短い形式で表すことができます。したがって、1 つのブロック内にすべて 0 がある場合、それを 1 つのゼロに置き換えることができます。したがって、上記のルールに従うと、0:0:0:0:0:0:0:0001;

となります。

PHPでIPアドレスを取得する

3.ここでもゼロを削除すると、次のようになります:: 0001

PHPでIPアドレスを取得する

4.これは再び「:: 1」に縮小され、出力になります。

上記のコードの説明: プライベート ドメインはインターネット プロトコル アドレスを提供しないため、実行しても何も出力されないか、実行時エラーが返される可能性があります。一方、WAMP サーバーを使用した場合のように、上記のコードがローカル サーバーまたはローカル ホストで実行される場合、IP バージョンに応じた出力が提供されます。つまり、IPv4 の場合、インターネット プロトコル アドレスは次のようになります。 '127:0:0:1' と表示されますが、IPv6 の場合、インターネット プロトコル アドレスは上記のように ':: 1'

と表示されます。

以上がPHPでIPアドレスを取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。