18

如何在 Zend-framework 2 中获取客户端的 IP 地址?在普通 PHP 中它是 $_SERVER['REMOTE_ADDR'] ,但也许是智能 Zend 函数?

有任何想法吗?

4

3 回答 3

31

您可以使用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();
于 2013-04-09T20:37:08.217 回答
29

ZF2 中的请求对象具有名为 的方法getServer。此方法返回一个实现\Zend\Stdlib\ParametersInterface. 使用此特定对象,您可以从 $_SERVER 变量中获取任何内容。

以下是如何使用方法和对象的两个示例:

<?php 
    // Getting the entire params object
    $servParam = $request->getServer();
    $remoteAddr = $servParam->get('REMOTE_ADDR');

    // Getting specific variable
    $remoteAddr = $request->getServer('REMOTE_ADDR');
?>
于 2013-04-09T18:57:26.477 回答
-13

大秘密:

$_SERVER['REMOTE_ADDR']

不要重新发明已经很容易的东西!

于 2013-04-09T18:41:08.247 回答