IPアドレスの取得方法
開発環境:CakePHP2.5.1
CakePHPでIPを取得するには、getClientIPやclientIpを使うと簡単に取得することができます。
ただし、共にIP偽装したアクセスに対しては対応出来ません。
その場合は素のPHPでシンプルに書くのがいいでしょう。
getClientIPの使い方
getClientIPはRequestHandlerにあるので、コンポーネントで呼び出して使います。
<?php public $components = array('RequestHandler'); public function index() { $ip = $this->RequestHandler->getClientIP(); } ?>
clientIpの使い方
内部的にはgetClientIPと同じですが、呼び出す時にRequestHandlerを呼びださなくても良いので、こちらの方がラクですね。
<?php public function index() { $ip = $this->request->clientIp(); } ?>
IP偽装に対応
ヘッダー情報でX-FORWARDED-FORやCLIENT-IPを偽装して送信されると、上記コードでは偽装されたIPが取得されます。
それでは問題ある場合には、$_SERVER[‘REMOTE_ADDR’]を使って処理するのが良いでしょう。
<?php $ip = $_SERVER['REMOTE_ADDR']; ?>