Метод getClientIp
Метод getClientIp класса Request возвращает
IP-адрес клиента, который обратился к приложению.
Метод не принимает параметров. При наличии доверенных
прокси метод возвращает реальный IP клиента из
заголовков X-Forwarded-For или X-Real-IP,
а не IP прокси-сервера.
Синтаксис
public function getClientIp(): ?string
Пример
Давайте получим IP-адрес клиента в контроллере и вернём его в ответе:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$ip = $request->getClientIp();
return new Response($ip);
}
}
?>
Результат выполнения кода:
"127.0.0.1"
Пример
Давайте сохраним IP-адрес клиента в переменную и используем его в условии:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/user', name: 'article_user')]
public function user(Request $request): Response
{
$ip = $request->getClientIp();
if ($ip === '127.0.0.1') {
$res = 'local user';
} else {
$res = 'remote user';
}
return new Response($res);
}
}
?>
Результат выполнения кода для локального клиента:
"local user"
Пример
Давайте выведем IP-адрес клиента вместе с остальными данными запроса:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/info', name: 'article_info')]
public function info(Request $request): Response
{
$res = [
'ip' => $request->getClientIp(),
'method' => $request->getMethod(),
'uri' => $request->getRequestUri(),
];
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"ip":"127.0.0.1","method":"GET","uri":"/info"}
Смотрите также
-
класс
Request,
который представляет HTTP-запрос -
метод
getMethod,
который возвращает HTTP-метод запроса -
метод
getRequestUri,
который возвращает URI запроса -
метод
getHost,
который возвращает хост запроса