How can I get the client's IP address in CakePHP? It'd be $_SERVER['REMOTE_ADDR'] in plain PHP.
I thought it's like all $_SERVER vars and can be accessed using env('VAR_NAME'), or getClientIP() in CakePHP, but it doesn't return the same results.
Any ideas?
CakePHP 1.x:
RequestHandlerComponent::getClientIp();
So to clarify:
public $components = array(
'RequestHandler'
);
Then in the controller method:
$this->RequestHandler->getClientIp();
CakePHP 2.x & CakepPHP 3.x:
RequestHandler::getClientIp() is deprecated; you can get the client IP from the CakeRequest object:
$this->request->clientIp();
CakePHP 3.x usage:
//in controller
$ip = $this->request->clientIp();
CakePHP 2.x usage
//in controller
$this->request->ClientIp();
CakePHP 1.x usage
//in controller
RequestHandlerComponent::getClientIP();
If you need to get the IP address from within a model, $this->request->getClientIp() won't work, throwing:
Error: Call to a member function clientIp() on a non-object
Use Router::getRequest()->clientIp() instead.
So basically, Router::getRequest() can serve as a Model's replacement of the Controller's $this->request
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With