PHPの$_SERVER["REMOTE_ADDR"]でIPアドレスが正常に取得できない場合
2022/09/16
とある環境でPHPの$_SERVER["REMOTE_ADDR"]でIPアドレスを取得し表示しようとすると全然関係ないIPアドレスが表示された。他の環境だと正常に取得できるので環境に依存する問題のように思われる。また、恐らくだが当該環境ではリバースプロキシを用いているっぽい。以下に対応方法をメモ。
原因
リバースプロキシやロードバランサーを介して接続したクライアントのIPアドレスはREMOTE_ADDRでは取得できない模様。なのでX-Forwarded-Forを使用する。
対応方法
function getClientIpAddress() { if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { $xForwardedFor = explode(",", $_SERVER['HTTP_X_FORWARDED_FOR']); if (!empty($xForwardedFor)) { return trim($xForwardedFor[0]); } } if (isset($_SERVER['REMOTE_ADDR'])) { return (string)$_SERVER['REMOTE_ADDR']; } return ""; } $ip = getClientIpAddress();
参考サイト
関連記事
-
-
Codeigniter4でMySQLに接続しCRUD操作する方法
Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任 ...
-
-
PHPで指定月の月末日を取得
今月の、だったらdate('t')でいくけど指定月の場合は どうしたらいいのか分 ...
-
-
PHPにて指定した画像に対して、繰り返し透かし画像処理する方法
画像素材等のサイトで無料版の画像に対して「sample」等の透かし画像処理を行っ ...
-
-
PHPでファイルをダウンロードさせる
集計ページみたいなんがあった。その集計ページを CSV化したいと言われた。 ■ソ ...
-
-
PHPとStripeを使ってサイト内でクレジットカード決済処理の実装方法
PHPとStripeの組み合わせでWebサービスにクレジットカード決済処理を導入 ...