>백엔드 개발 >PHP 튜토리얼 >PHP에서 가장 정확한 사용자 IP 주소를 어떻게 얻을 수 있나요?

PHP에서 가장 정확한 사용자 IP 주소를 어떻게 얻을 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-12-15 04:27:09314검색

How Can I Get the Most Accurate User IP Address in PHP?

PHP에서 가장 정확한 사용자 IP 주소 결정

PHP를 사용하여 사용자의 IP 주소를 검색할 때 고려할 수 있는 여러 서버 변수가 있습니다. 완벽한 방법은 없지만 이 문서에서는 이러한 변수를 기반으로 가장 정확한 접근 방식을 탐색합니다.

배경

$_SERVER 배열에는 잠재적으로 IP 주소 정보를 제공하는 수많은 헤더가 포함되어 있습니다. . 그러나 이러한 헤더의 신뢰성과 정확성은 프록시 구성 및 네트워크 토폴로지에 따라 달라질 수 있습니다.

일반적으로 사용되는 방법

전통적으로 다음 순서를 사용하여 정보를 얻습니다. 사용자의 IP 주소:

  1. 다음을 확인하세요. HTTP_CLIENT_IP
  2. 없는 경우 HTTP_X_FORWARDED_FOR을 확인하고 쉼표로 구분된 값을 반복합니다.
  3. HTTP_X_FORWARDED, HTTP_X_CLUSTER_CLIENT_IP, HTTP_FORWARDED_FOR 및 HTTP_FORWARDED를 고려
  4. 사용 대체 수단으로서의 REMOTE_ADDR

최적화된 접근 방식

정확도와 성능을 향상시키기 위해 이 시퀀스는 다음과 같이 최적화되었습니다. 다음:

function get_ip_address() {
    $headers = ['HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR'];

    foreach ($headers as $header) {
        if (isset($_SERVER[$header]) && ($ip = trim($_SERVER[$header]))) {
            if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
                return $ip;
            }
        }
    }

    return null;
}

주의

이 접근 방식은 대부분의 프록시 뒤에 있는 사용자의 IP 주소를 검색하지만 다음 사항에 유의하는 것이 중요합니다.

  • REMOTE_ADDR은 대부분의 경우 가장 신뢰할 수 있는 IP 주소 정보 소스로 남아 있습니다.
  • 이 솔루션은 악의적인 사용자가 IP 주소를 스푸핑하는 것을 방지할 수 없습니다.
  • 중요한 애플리케이션의 경우 보안을 강화하기 위한 추가 조치를 고려하십시오.

추가 참고사항

  • validate_ip() 함수는 사용하도록 최적화되었습니다. PHP filter_var() 함수.
  • 간결함을 위해 IPv6 유효성 검사는 포함되지 않았습니다.
  • 프록시에서 검색된 IP 주소는 사용자의 실제 위치를 정확하게 나타내지 않을 수 있다는 점을 기억하세요.

위 내용은 PHP에서 가장 정확한 사용자 IP 주소를 어떻게 얻을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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