>백엔드 개발 >PHP 문제 >PHP에서 클라이언트 IP 주소를 얻는 방법

PHP에서 클라이언트 IP 주소를 얻는 방법

(*-*)浩
(*-*)浩원래의
2019-09-30 11:54:366175검색

php에서 클라이언트 IP 주소를 얻는 방법

PHP에서 클라이언트 IP 주소를 얻는 방법

1. 프록시 서버를 사용하지 않는 경우

REMOTE_ADDR = 클라이언트 IP HTTP_X_FORWARDED_FOR = 값이 없거나 표시되지 않습니다. (권장 학습: PHP 비디오 튜토리얼)

$ip = $_SERVER['REMOTE_ADDR'];

2. 투명 프록시 사용

REMOTE_ADDR = 마지막 프록시 서버 IP

HTTP_X_FORWARDED_FOR = 클라이언트 실제 IP(여러 프록시 서버를 통과할 때 이 값은 유사함: 221.5.252.160, 203.98.182.163, 203. 129.72 .215)

이 유형의 프록시는 고객의 실제 IP를 요청 개체에 전송하며 실제 IP는 숨길 수 없습니다.

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

3. 일반 익명 프록시 서버 사용

REMOTE_ADDR = 마지막 프록시 서버 IP

HTTP_X_FORWARDED_FOR = 프록시 서버 IP(여러 프록시 서버를 통과할 때 이 값은 유사함: 203.98.182.163, 203.98.182.163) , 203.129.72.215)

이렇게 하면 클라이언트의 실제 IP가 숨겨지지만 서버는 클라이언트가 프록시 서버를 통해 액세스한다는 것을 알게 됩니다.

4. 사기성 프록시 서버 사용

REMOTE_ADDR = 프록시 서버 IP

HTTP_X_FORWARDED_FOR = 임의 IP(여러 프록시 서버를 통과할 때 이 값은 유사함: 220.4.251.159, 203.98.182.163, 203.129.72.215 )

서버는 프록시 서버를 통해 접근을 식별할 수 있지만 대상 서버로 보낸 가짜 IP는 거짓입니다.

5. 익명성이 높은 프록시를 사용하세요

REMOTE_ADDR = 프록시 서버 IP HTTP_X_FORWARDED_FOR = 값이 없거나 표시되지 않습니다.

이런 종류의 프록시를 사용하면 브라우저와 장치마다 다른 IP 헤더 정보가 반환됩니다. PHP에서는 $_SERVER["REMOTE_ADDR"] 및 $_SERVER["HTTP_X_FORWARDED_FOR"]로 얻은 값이 null 값이거나 "알 수 없는" 값일 수 있습니다.

PHP는 다음과 같이 IP 코드를 얻습니다.

public function ip() {
    //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。
    if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
        $ip = getenv('HTTP_X_FORWARDED_FOR');
    } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
        $ip = getenv('REMOTE_ADDR');
    } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
        $ip = $_SERVER[&#39;REMOTE_ADDR&#39;];
    }
    $res =  preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
    echo $res;
    //dump(phpinfo());//所有PHP配置信息
}

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

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