Zend-framework 2でクライアントのIPアドレスを取得するにはどうすればよいですか?プレーンPHPでは$ _SERVER ['REMOTE_ADDR']になりますが、スマートZend関数でしょうか。
何か案は?
ZF2のリクエストオブジェクトには、getServer
という名前のメソッドがあります。このメソッドは、\Zend\Stdlib\ParametersInterface
を実装するオブジェクトを返します。この特定のオブジェクトを使用すると、$ _ SERVER変数から何でも取得できます。
メソッドとオブジェクトの使用方法の2つの例を次に示します。
<?php
// Getting the entire params object
$servParam = $request->getServer();
$remoteAddr = $servParam->get('REMOTE_ADDR');
// Getting specific variable
$remoteAddr = $request->getServer('REMOTE_ADDR');
?>
_Zend\Http\PhpEnvironment\RemoteAddress
_クラスを使用して、クライアントのIPアドレスを取得できます。
_$remote = new Zend\Http\PhpEnvironment\RemoteAddress;
echo $remote->getIpAddress();
_
http://framework.zend.com/apidoc/2.1/classes/Zend.Http.PhpEnvironment.RemoteAddress.html を参照してください。
注:
ヘッダー_HTTP_X_FORWARDED_FOR
_の検査を有効にするには、setUseProxy()
をオンにします。
_$remote->setUseProxy()->getIpAddress();
_