CakePHP获取IP地址

Adi*_*att 23 php cakephp ip-address

如何在CakePHP中获取客户端的IP地址?它是$_SERVER['REMOTE_ADDR']在普通的PHP中.

我认为它就像所有$_SERVER变量,可以使用env('VAR_NAME'),或getClientIP()在CakePHP中访问,但它不会返回相同的结果.

有任何想法吗?

ric*_*h97 58

CakePHP 1.x:

RequestHandlerComponent::getClientIp();

所以澄清一下:

public $components = array(
    'RequestHandler'
);
Run Code Online (Sandbox Code Playgroud)

然后在控制器方法中:

$this->RequestHandler->getClientIp();
Run Code Online (Sandbox Code Playgroud)

CakePHP 2.x:

RequestHandler::getClientIp()已弃用; 您可以从CakeRequest对象获取客户端IP :

$this->request->clientIp();
Run Code Online (Sandbox Code Playgroud)

  • `getClientIp(false)`在某些情况下可能是可取的,有时(比如在Heroku上)IP在HTTP_X_FORWARDED_FOR中. (4认同)
  • 它已被弃用,而是使用来自您的控制器的`$ this-> request-> clientIp()`. (2认同)

Adi*_*att 14

CakePHP 3.x用法:

//in controller
$ip = $this->request->clientIp();
Run Code Online (Sandbox Code Playgroud)

CakePHP 2.x用法

//in controller
$this->request->ClientIp();
Run Code Online (Sandbox Code Playgroud)

CakePHP 1.x用法

//in controller
RequestHandlerComponent::getClientIP();
Run Code Online (Sandbox Code Playgroud)