클라이언트의 실제 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!