이 글은 주로 PHP에서 클라이언트의 실제 IP 주소를 얻는 방법을 소개합니다. 이제 특정 참조 값이 있습니다. 필요한 친구가 참조할 수 있습니다.
추천 매뉴얼: php full self -study manual
REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR HTTP_VIA
HTTP_CLIENT_IP는 프록시 서버가 보낸 HTTP 헤더입니다. "수퍼 익명 프록시"인 경우 없음 값이 반환됩니다. 마찬가지로 REMOTE_ADDR은 이 프록시 서버의 IP로 대체됩니다.
$_SERVER['REMOTE_ADDR']; //액세스 끝(사용자일 수 있음, 프록시일 수 있음) IP
$_SERVER['HTTP_CLIENT_IP'] //에이전트 끝(존재할 수 있음, 위조 가능)
$_SERVER ['HTTP_X_FORWARDED_FOR']; //사용자가 프록시로 사용하는 IP(존재할 수도 있고 위조될 수도 있음)
권장 관련 기사:
1.php에서 사용자의 IP 주소를 얻는 방법
2.PHP에서 클라이언트의 IP 주소를 얻는 방법은 무엇입니까?
관련 영상 추천 :
1.Dugu Jiujian (4)_PHP 영상 튜토리얼
세 가지 값의 차이는 다음과 같습니다.
1. 프록시 서버가 없을 때 사용됨:
REMOTE_ADDR = 귀하의 IP
HTTP_VIA = 값이 없거나 표시되지 않음
HTTP_X_FORWARDED_FOR = 값이 없거나 표시되지 않음
2. 투명 프록시 서버 사용: 투명 프록시
REMOTE_ADDR = 마지막 프록시 서버 IP
HTTP_VIA = 프록시 서버 IP
HTTP_X_FORWARDED_FOR = 여러 프록시 서버를 통과할 때 이 값은 203.98.182.163, 203.98.182.163, 203.129.72.215와 유사합니다.
이 유형의 프록시 서버는 여전히 귀하의 정보를 방문자에게 전달하므로 귀하의 실제 신원을 숨기려는 목적을 달성할 수 없습니다.
3. 일반 익명 프록시 서버를 사용하는 상황: 익명 프록시
REMOTE_ADDR = 마지막 프록시 서버 IP
HTTP_VIA = 프록시 서버 IP
HTTP_X_FORWARDED_FOR = 프록시 서버 IP와 유사합니다. 다음: 203.98.182.163, 203.98.182.163, 203.129.72.215.
실제 IP를 숨기되 방문자에게 액세스하기 위해 프록시 서버를 사용하고 있다는 사실을 공개하세요.
4. 거짓 프록시 서버를 사용하는 상황: 왜곡된 프록시
REMOTE_ADDR = 프록시 서버 IP
HTTP_VIA = 프록시 서버 IP
HTTP_X_FORWARDED_FOR = 임의 IP를 통과할 때 이 값은 다음과 유사합니다. : 203.98.182.163, 203.98.182.163, 203.129.72.215.
방문하는 사람에게 프록시 서버를 사용하고 있다고 알리고 실제 IP 대신 가짜 임의 IP를 만들어 스푸핑하세요.
5. 높은 익명성 프록시 서버를 사용하는 경우: 높은 익명성 프록시(엘리트 프록시)
REMOTE_ADDR = 프록시 서버 IP
HTTP_VIA = 값 없음 또는 표시 없음
HTTP_X_FORWARDED_FOR = 여러 프록시 서버를 통해 값 없음 또는 표시 없음 값은 203.98.182.163, 203.98.182.163, 203.129.72.215와 유사합니다.
프록시 서버를 사용하여 객체에 직접 액세스하는 것처럼 모든 정보를 프록시 서버의 정보로 완전히 대체합니다.
6. 클라이언트의 실제 IP 주소를 얻는 예:
function get_real_ip() { $ip=FALSE; //客户端IP 或 NONE if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空 if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i < count($ips); $i++) { if (!eregi ("^(10│172.16│192.168).", $ips[$i])) { $ip = $ips[$i]; break; } } } //客户端IP 或 (最后一个)代理服务器 IP return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); }
위는 이 글의 전체 내용입니다. 더 많은 관련 내용을 보려면 다음 내용을 주의 깊게 읽어보시기 바랍니다. PHP 중국어 웹사이트!
관련 권장 사항:
PHP 클래스 라이브러리 PHPqrCode를 사용하여 QR 코드 생성
위 내용은 PHP에서 클라이언트의 실제 IP 주소를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!