- 1. 概要
- 2. 自前で作る
1. 概要
「PHP」で、アクセス元の IP アドレスを見るのは、基本は
$_SERVER['REMOTE_ADDR']
なわけですが、「Laravel」の場合
\Request::ip()
で、とってくることもできます。
だがしかし
しかし、上記の方法では、リバースプロシキ下などの環境では、サーバーのIPアドレスを取得してしまい、クライアントのグローバルIPアドレスを取得しません。
といことらしいのだ。
「リバースプロキシ」・・・わたしは、ようわかっていません。
「リバースプロキシ - Wikipedia」を参考にしてください。
本ページは、下記のサイトを参考にさせていただきました。
「LaravelでIPアドレスを取得する」
2. 自前で作る設定
下記のような、ものをつくって、使えばいいのだそうな(参考サイト、まるパクリ)。
public function getIp()
{
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key)
{
if (array_key_exists($key, $_SERVER) === true)
{
foreach (explode(',', $_SERVER[$key]) as $ip)
{
$ip = trim($ip); // just to be safe
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false)
{
return $ip;
}
}
}
}
}
|