Symfony2 컨트롤러에서 사용자 IP 주소를 어떻게 얻습니까?
댓글을 작성한 사용자의 IP 주소를 양식 제출 후 데이터베이스에 저장해야합니다.
IP를 얻기위한 symfony2 기능이 있습니까? 아니면 IP를 얻는 다른 방법이 있습니까?
요청 서비스를 사용하여 클라이언트 IP를 얻을 수 있습니다.
$this->container->get('request')->getClientIp();
2.3 이전의 Symfony에서는 $this->container->get('request')->getClientIp()
마스터 요청 컨트롤러 내에서만 작동합니다. 하위 요청 컨트롤러에서 이것은 항상 127.0.0.1
. 프로젝트가 Symfony 2.2에서 하위 요청을 사용하는 경우 방탄 솔루션은 kernel.request
리스너 를 생성 하고 마스터 요청에서 IP를 저장하는 것입니다.
심포니에서 2.3 이 때문에 실제 IP가 프록시 목록에 밀려 내부 하위 요청을 고정 참조 된 https://github.com/symfony/symfony/commit/2f3b33a630727cbc9cf21262817240a72a8dae0c을 추가 할 필요가 그래서 127.0.0.1
에 trusted_proxies
클라이언트를 얻을 수 구성 매개 변수 Symfony 2.3+의 하위 요청에있는 Request의 ip이지만 보안상의 이유로 공유 호스팅에서는이 작업을 수행해서는 안됩니다.
또한 내장 HTTP 캐시 ( in )가 Symfony 2.3.20 이전에 사용 된 경우 명시 적으로에 127.0.0.1
추가해야 했습니다. 이 캐시는 실제 리버스 프록시처럼 보이도록 시도하고 마스터 요청의 일부 헤더를 수정합니다. https://github.com/symfony/symfony/commit/902efb8a84e8f0acf6a63e09afa08e3dcdd80fb9 에서 수정되었습니다.trusted_proxies
AppCache
web/app.php
Symfony 2.4 및 3.x 이후 현재 요청에 액세스하는 데 선호되는 방법은 request_stack
서비스 를 사용하는 것입니다.
$this->container->get('request_stack')->getCurrentRequest()->getClientIp();
또는 컨트롤러에 요청을 삽입하려면 http://symfony.com/doc/current/book/controller.html#the-request-as-a-controller-argument를 참조 하십시오.
public function indexAction(Request $request)
{
$ip = $request->getClientIp();
}
그러나 하위 요청에서 사용될 때 127.0.0.1을 제외하는 것에 대한 우려는 여전히 적용되지만 이제는 다음을 사용하여 명시 적으로 마스터 요청을 참조 할 수 있습니다.
$this->container->get('request_stack')->getMasterRequest()->getClientIp();
참고로, Symfony 2.0 기준 Request::getClientIp
$proxy
매개 변수는 있다 되지 않습니다 . 그것은됩니다 제거 심포니 2.3.
사용할 수 있습니다
$container->get('request')->server->get("REMOTE_ADDR");
또는 @meze 대답으로
$container->get('request')->getClientIp();
Symfony 2.6 이상의 경우 다음 코드를 사용하십시오 (컨트롤러 내에서 :
$this->container->get('request_stack')->getCurrentRequest()->getClientIp();
현재 클라이언트 IP를 서비스 또는 메서드 호출에 삽입하는 또 다른 방법이 있습니다.
acme.currentIP:
class: some\service\className
arguments:
- "@=service('request_stack').getCurrentRequest().getClientIp()"
참고 URL : https://stackoverflow.com/questions/9029757/how-do-i-get-the-user-ip-address-in-symfony2-controller
'Program Tip' 카테고리의 다른 글
Mac OS X에서 터미널 창에 코드를 vim에 붙여 넣기 (0) | 2020.11.09 |
---|---|
문자열의 문자 순서를 반대로 (0) | 2020.11.09 |
ServerName이없는 기본 가상 호스트에서 HTTP를 HTTPS로 리디렉션 (0) | 2020.11.09 |
효율적인 방법으로 파일의 줄 수를 어떻게 얻을 수 있습니까? (0) | 2020.11.09 |
최대 절전 모드 : flush () 및 commit () (0) | 2020.11.09 |