1. 사용자의 실제 IP 주소를 얻습니다.
public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } if (getenv('HTTP_X_REAL_IP')) { $ip = getenv('HTTP_X_REAL_IP'); } elseif (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); $ips = explode(',', $ip); $ip = $ips[0]; } elseif (getenv('REMOTE_ADDR')) { $ip = getenv('REMOTE_ADDR'); } else { $ip = '0.0.0.0'; } return $ip; }
참고: #🎜🎜 #
2. REMOTE_ADDR 정보
이 변수는 "직접 소스"의 IP 주소를 가져옵니다. 이 주소에 대한 클라이언트 IP를 직접 요청합니다. 단일 서버의 경우 이 IP는 매우 정확하며 위조가 불가능합니다. 물론 모든 프로그램이 단일 서버여야 하는 것은 아닙니다. 예를 들어 로드 밸런싱을 사용하는 경우(예: 로드 밸런싱을 위해 haproxy 또는 nginx 사용) 프로세스가 클라이언트->로드이므로 이 IP는 전달 시스템의 IP입니다. 밸런싱 -> 서버 측. 클라이언트가 아닌 로드밸런서가 직접 접속하는 서버입니다.3. HTTP_X_FORWARDED_FOR 및 HTTP_CLIENT_IP 정보
로드 밸런싱에서는 REMOTE_ADDR을 직접 사용하여 클라이언트 IP를 얻을 수 없습니다. 문제는 해결되어야 합니다. 따라서 클라이언트 IP를 HEAD에 추가하여 서버로 보내면 서버가 클라이언트의 실제 IP를 얻을 수 있도록 하는 로드 밸런싱 측이 파생됩니다. 물론 위조라고 부르는 것이 생성됩니다. 결국 HEAD 프로토콜의 고정 데이터를 제외하고 다른 데이터는 사용자 정의할 수 있습니다. 추천 튜토리얼:위 내용은 PHP는 실제 IP를 얻을 수 없습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!