CakePHP Получить IP-адрес
Как я могу получить IP-адрес клиента в CakePHP? Это будет $_SERVER['REMOTE_ADDR']
в простом PHP.
Я думал, что он похож на все $_SERVER
vars и может быть доступен с помощью env('VAR_NAME')
или getClientIP()
в CakePHP, но он не возвращает те же результаты.
Любые идеи?
Ответы
Ответ 1
CakePHP 1.x:
RequestHandlerComponent::getClientIp();
Итак, чтобы уточнить:
public $components = array(
'RequestHandler'
);
Затем в методе контроллера:
$this->RequestHandler->getClientIp();
CakePHP 2.x:
RequestHandler::getClientIp()
устарел; вы можете получить IP-адрес клиента из объекта CakeRequest
:
$this->request->clientIp();
Ответ 2
Использование CakePHP 3.x:
//in controller
$ip = $this->request->clientIp();
Использование CakePHP 2.x
//in controller
$this->request->ClientIp();
Использование CakePHP 1.x
//in controller
RequestHandlerComponent::getClientIP();
Ответ 3
Если вам нужно получить IP-адрес из модели, $this->request->getClientIp()
не будет работать, бросая:
Ошибка: Вызов функции-члена clientIp() для не-объекта
Используйте Router::getRequest()->clientIp()
вместо этого.
В принципе, Router::getRequest()
может служить заменой модели контроллера $this->request