PHP에서 획득한 IP가 정확하지 않은 것은 사용자가 프록시를 사용했기 때문일 수 있으므로 "$_SERVER['REMOTE_ADDR']"는 사용자의 실제 IP를 인식할 수 없습니다. 해결 방법은 "X-Forwarded-For"를 정의하여 획득하는 것입니다. " 엔터티 헤더 실제 IP입니다.
이 문서의 운영 환경: Windows 7 시스템, PHP7.1, Dell G3 컴퓨터.
php로 얻은 IP는 진짜가 아닌가요?
여러분, 갑자기 뭔가가 일어났습니다. 우리는 서버의 인트라넷 IP(아마도 서버의 프록시 IP)를 얻기 위해 일반적인 $_SERVER['REMOTE_ADDR'];을 사용하지 않습니다. 해당 코드에는 문제가 없으며 역방향 프록시(nginx 등)를 사용하고 사용자도 프록시를 사용할 수 있으므로 간단한 $_SERVER['REMOTE_ADDR']로는 사용자의 실제 IP를 감지할 수 없습니다.
하지만 프록시 IP를 통해 실제 사용자의 주소를 알아낼 수 있는 매개변수가 있습니다. HTTP 프로토콜을 확장합니다. X-Forwarded-For라는 엔터티 헤더가 정의됩니다.
이를 주로 광고 스타를 대상으로 고려하기 때문에 결국 다른 사람들도 대리인 역할을 하여 매출을 늘릴 수 있습니다.
【추천: PHP 비디오 튜토리얼】
코드는 다음과 같습니다:
//获取用户IP地址 public function getIp() { if(!empty($_SERVER["HTTP_CLIENT_IP"])) { $cip = $_SERVER["HTTP_CLIENT_IP"]; } else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) { $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if(!empty($_SERVER["REMOTE_ADDR"])) { $cip = $_SERVER["REMOTE_ADDR"]; } else { $cip = ''; } preg_match("/[\d\.]{7,15}/", $cip, $cips); $cip = isset($cips[0]) ? $cips[0] : 'unknown'; unset($cips); return $cip; }
위 내용은 PHP로 얻은 IP가 정확하지 않으면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!