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['REMOTE_ADDR']; } $res = preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : ''; echo $res; //dump(phpinfo());//所有PHP配置信息 }
위 내용은 PHP에서 클라이언트 IP 주소를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!