[解決済み】PHPでクライアントIPアドレスを取得する【重複あり
2022-04-07 14:45:32
質問
自分のホームページを利用しているクライアントのIPアドレスを取得したい。私は、PHPの
$_SERVER
スーパーグローバル
$_SERVER['REMOTE_ADDR'];
しかし、この方法では正しいIPアドレスを与えることができないようです。私は自分のIPアドレスを取得し、それが私のIPアドレスとは異なることを確認し、私はまた、いくつかのWebサイトのように私のIPアドレスを見ることができます。
http://whatismyipaddress.com/
PHPの関数に与えるIPアドレスを貼り付けるのですが、このウェブサイトではこれに関する結果が表示されません。この問題はどのように発生し、どのようにクライアントのIPアドレスを取得できるのでしょうか?
解決方法を教えてください。
最も簡単な方法は、訪問者/クライアントの
IPアドレス
を使用することです。
$_SERVER['REMOTE_ADDR']
または
$_SERVER['REMOTE_HOST']
変数を使用します。
しかし、これでは訪問者の正しいIPアドレスを返せないことがあるので、他のサーバー変数を使用してIPアドレスを取得することができます。
以下の2つの関数は、値の取得方法と取得先が異なるだけで、同じものです。
getenv() は、PHP の環境変数の値を取得するために使用します。
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
$_SERVER は、ウェブサーバーが作成するサーバー変数を格納する配列です。
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
関連
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み] Long-Polling、Websocket、Server-Sent Events (SSE)、Cometとは何ですか?
-
[解決済み] ASP.NETでユーザーのクライアントIPアドレスを取得する方法は?
-
[解決済み] Express.js:リモートクライアントアドレスを取得する方法
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】PHPで空の値からデフォルトオブジェクトを作成する?
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】/var/www/htmlとは何ですか?[クローズド]
-
[解決済み】PHPでユーザーの正しいIPアドレスを取得する最も正確な方法は何ですか?