PHP でユーザーIP アドレスを取得する
-
PHP で
$_SERVER['REMOTE_ADDR']
を使用してユーザーの IP アドレスを検索する -
$_SERVER['REMOTE_ADDR']
、$_SERVER['HTTP_CLIENT_IP']
および$_SERVER['HTTP_X_FORWARDED_FOR']
を使用してユーザーの IP アドレスを検索する -
三項演算子と
isset()
関数を使用して、ユーザーの IP アドレスを検索する
唯一の配列要素として REMOTE_ADDR
を使用して $_SERVER
スーパーグローバル変数を使用して、PHP のサーバーからユーザーの IP アドレスにアクセスする方法を紹介します。$_SERVER['REMOTE_ADDR']
として使用されます。
条件式を使用して PHP でユーザーの IP アドレスにアクセスし、ユーザーの IP アドレスが共有インターネットからのものか、プロキシからのものか、実際の IP アドレスかを確認する別の方法を示します。このメソッドは、HTTP_CLIENT_IP
、HTTP_X_FORWARDED_FOR
、REMOTE_ADDR
などの配列要素を使用します。
三項演算子と isset()
関数を使用して、PHP でユーザーの IP アドレスを取得するための簡単な方法を示します。このメソッドは、$_SERVER
スーパーグローバル変数の HTTP_CLIENT_IP
、HTTP_X_FORWARDED_FOR
、REMOTE_ADDR
などの配列要素も使用します。
PHP で $_SERVER['REMOTE_ADDR']
を使用してユーザーの IP アドレスを検索する
$_SERVER['REMOTE_ADDR']
式を使用して、ユーザーが現在のページにアクセスしている場所から IP アドレスを見つけることができます。$_SERVER
は PHP のスーパーグローバル変数であり、引数としてさまざまな配列要素を取ります。クライアントの実際の IP アドレスにアクセスするために、$_SERVER
変数の配列要素として REMOTE_ADDR
を使用します。$_SERVER['REMOTE_ADDR']
は、すべての場合にクライアントの正しい IP アドレスを常に提供するとは限らないことに注意してください。その他のケースについては、以下で説明します。上記の式が接続の実際の IP を返すように、サーバーAPI(SAPI)が適切に構成されていることを確認してください。
以下の例では、localhost
がサーバーとして使用されています。したがって、ループバック IP アドレスを返します。ループバックアドレスについては、こちらを参照してください。次の PHP スクリプトの URL が http://localhost/index.php
であるとします。ローカルマシンの IP アドレスを::1
として出力します。::1
は、localhost
の IPv6 表現です。
たとえば、$_SERVER['REMOTE_ADDR']
を変数 ip_addr
に割り当てます。次に、echo
を使用して変数を出力します。
サンプルコード:
# php 7.x
<?php
$ip_add = $_SERVER['REMOTE_ADDR'];
echo "The user's IP address is - ".$ip_add;
?>
出力:
The user's IP address is - ::1
$_SERVER['REMOTE_ADDR']
、$_SERVER['HTTP_CLIENT_IP']
および $_SERVER['HTTP_X_FORWARDED_FOR']
を使用してユーザーの IP アドレスを検索する
スーパーグローバル変数 $_SERVER
の配列要素($_SERVER['REMOTE_ADDR']
、$_SERVER['HTTP_CLIENT_IP']
、$_SERVER['HTTP_X_FORWARDED_FOR']
など)を使用して、の IP アドレスを見つけることができます。PHP のユーザー。$_SERVER['REMOTE_ADDR']
を使用して、ユーザーの実際の IP アドレスを見つけます。$_SERVER['HTTP_CLIENT_IP']
を使用して、ユーザーが共有インターネットからページにアクセスしているときに IP アドレスを見つけます。$_SERVER['HTTP_X_FORWARDED_FOR']
を使用して、ユーザーがプロキシを使用して Web ページにアクセスするときに IP アドレスを見つけます。HTTP_X_FORWARDED_FOR
や HTTP_CLIENT_IP
などのヘッダーは誰でも設定できるため、なりすましされる可能性があることに注意してください。場合によっては、クライアントの実際の IP アドレスを表していないことがあります。
たとえば、empty()
関数を使用して、$_SERVER['HTTP_CLIENT_IP']
に何かが含まれているかどうかを確認します。含まれている場合は、$ip
変数に値を割り当て、i を出力します。
再度、$_SERVER['HTTP_X_FORWARDED_FOR']
のチェックを適宜実行し、値を割り当てて、存在する場合は出力します。$_SERVER['REMOTE_ADDR']
で同様の操作を実行します。
以下の例では、$_SERVER['REMOTE_ADDR']
は、ユーザーがプロキシや共有インターネット接続を使用していないため、IP アドレスを返します。配列 $_SERVER
の詳細については、PHP マニュアルをご参照ください。
サンプルコード:
#php 7.x
<?php if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
echo $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
echo $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
echo $ip = $_SERVER['REMOTE_ADDR'];
}
?>
出力:
::1
三項演算子と isset()
関数を使用して、ユーザーの IP アドレスを検索する
簡単な方法を使用して、三項演算子を使用して PHP でユーザーの IP アドレスを見つけることができます。このメソッドでは、isset()
メソッドは、配列に指定された要素またはヘッダーファイルが含まれているかどうかを確認します。
たとえば、isset()
関数を使用して、配列に HTTP_CLIENT_IP
が含まれているかどうかを確認します。条件が真の場合、HTTP_CLIENT_IP
が設定されます。次に、条件が失敗した場合、isset()
関数を使用して、配列に HTTP_X_FORWARDED_FOR
が含まれているかどうかを確認します。同様に、条件が真の場合、HTTP_X_FORWARDED_FOR
が設定され、条件が失敗すると REMOTE_ADDR
が設定されます。
以下の例では、クライアントはプロキシまたは共有インターネットを使用していません。そのため、$_SERVER['REMOTE_ADDR'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)
が実行されます。三項演算子については、MSDN Web Docsをご参照ください。
サンプルコード:
#php 7.x
<?php
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
echo "The user IP Address is - ". $ip;
?>
出力:
The user IP Address is - ::1
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn