Подтвердить что ты не робот

CakePHP Получить IP-адрес

Как я могу получить IP-адрес клиента в CakePHP? Это будет $_SERVER['REMOTE_ADDR'] в простом PHP.

Я думал, что он похож на все $_SERVER vars и может быть доступен с помощью env('VAR_NAME') или getClientIP() в CakePHP, но он не возвращает те же результаты.

Любые идеи?

4b9b3361

Ответ 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