>백엔드 개발 >PHP 튜토리얼 >PHP에서 사용자 클라이언트의 실제 IP를 얻는 방법

PHP에서 사용자 클라이언트의 실제 IP를 얻는 방법

怪我咯
怪我咯원래의
2017-07-05 10:57:471191검색

클라이언트의 실제 IP를 얻기 위한 아이디어에 대한 일부 분석은 정확하지 않을 수 있지만 적어도 정확성은 훨씬 좋습니다.

코드는 다음과 같습니다:

function GetIP(){ 
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 
$ip = getenv("HTTP_CLIENT_IP"); 
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) 
$ip = getenv("HTTP_X_FORWARDED_FOR"); 
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
$ip = getenv("REMOTE_ADDR"); 
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 
$ip = $_SERVER['REMOTE_ADDR']; 
else 
$ip = "unknown"; 
return($ip); 
}

regist=off 문제
if ($register_globals!=1) {
@extract($_SERVER, EXTR_SKIP)
@extract($_COOKIE, EXTR_SKIP);
@ extract($_SESSION, EXTR_SKIP);
@extract($_FILES, EXTR_SKIP);
@extract($_ENV, EXTR_SKIP) ;
}
그 중 REMOTE_ADDR이 이해하기 쉽습니다.
php 매뉴얼
에는 HTTP_x_FORWARDED_FOR에 대해 미리 정의된 변수라고 나와 있는데 인터넷에서 몇 가지 정보를 찾아보니 이렇게 나와 있습니다. $_SERVER["REMOTE_ADDR" ] in PHP 클라이언트의 IP 주소를 얻으려면 클라이언트가 프록시 서버를 사용하여 액세스하는 경우 실제 클라이언트 IP 주소가 아닌 프록시 서버의 IP 주소를 얻습니다. 프록시 서버를 통해 클라이언트의 실제 IP 주소를 얻으려면 $_SERVER["HTTP_X_FORWARDED_FOR"]를 사용하여 읽으십시오. 그러나 모든 프록시 서버가 $_SERVER["HTTP_X_FORWARDED_FOR"]를 사용하여 클라이언트의 실제 IP를 읽을 수 있는 것은 아닙니다. 이 방법으로 읽은 IP 중 일부는 여전히 프록시 서버의 IP입니다. ㅋㅋㅋ 메시지. IP 헤더 메시지) 따라서 PHP는 각 IP 헤더 메시지를 판단하려고 시도하며, 메시지가 있으면 그 중 하나를 가져옵니다.

위 내용은 PHP에서 사용자 클라이언트의 실제 IP를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.