백엔드 개발 PHP 튜토리얼 PHP는 사용자의 실제 IP를 얻습니다

PHP는 사용자의 실제 IP를 얻습니다

Aug 08, 2016 am 09:19 AM
http ip server

며칠 전 인터뷰에서 $_SERVER['SERVER_ADDR']을 통해 얻은 IP 주소에 어떤 문제가 있느냐는 질문을 받았습니다. "사용자가 프록시를 통해 실제 IP 주소를 얻을 수 없는 경우"일 것입니다. 다행히 면접관은 더 이상 질문을 하지 않았습니다. 그렇다면 사용자의 실제 IP 주소를 얻는 방법은 무엇입니까?

분석

요즘에는 많은 사용자가 인터넷에 접속하기 위해 직접 전화 접속을 하지 않고 라우터나 다른 프록시를 통해 네트워크에 접속합니다. 사용자 클라이언트의 실제 IP 주소를 얻으려면 $_SERVER['SERVER_ADDR']을 직접 사용할 수는 없습니다. 이렇게 얻은 IP 주소는 사용자의 공인 IP가 아닌 192.168.1.99와 같은 **LAN** IP일 수 있기 때문입니다. 주소 .

다행히도 우리의 접근 요청이 공용 네트워크 라우팅이나 프록시 서버를 통과할 때, 단말은 HTTP 요청에 X-Forwarded-For 헤더 정보를 추가할 것이고, 우리는 이 요청 헤더를 사용하여 해당 요청의 실제 신원을 얻을 수 있습니다. 클라이언트.IP 주소.

코드

<code><span><span><?php</span><span>/**
 * 获取用户的真实ip地址
 *<span> @return</span> string
 */</span><span><span>function</span><span>get_client_ip</span><span>()</span>{</span><span>$headers</span> = <span>array</span>(<span>'HTTP_X_REAL_FORWARDED_FOR'</span>, <span>'HTTP_X_FORWARDED_FOR'</span>, <span>'HTTP_CLIENT_IP'</span>, <span>'REMOTE_ADDR'</span>);
    <span>foreach</span> (<span>$headers</span><span>as</span><span>$h</span>){
        <span>$ip</span> = <span>$_SERVER</span>[<span>$h</span>];
        <span>// 有些ip可能隐匿,即为unknown</span><span>if</span> ( <span>isset</span>(<span>$ip</span>) && strcasecmp(<span>$ip</span>, <span>'unknown'</span>) ){
            <span>break</span>;
        }
    }
    <span>if</span>( <span>$ip</span> ){
        <span>// 可能通过多个代理,其中第一个为真实ip地址</span><span>list</span>(<span>$ip</span>) = explode(<span>', '</span>, <span>$ip</span>, <span>2</span>);
    }
    <span>/* 如果是服务器自身访问,获取服务器的ip地址(该地址可能是局域网ip)
    if ('127.0.0.1' == $ip){
        $ip = $_SERVER['SERVER_ADDR'];
    }
    */</span><span>return</span><span>$ip</span>;
}
<span>?></span></span></code>
로그인 후 복사

저작권: 이 글은 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

위 내용은 사용자의 실제 IP를 얻기 위한 PHP에 대한 내용을 포함하여, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

http 상태 코드 520은 무엇을 의미합니까? http 상태 코드 520은 무엇을 의미합니까? Oct 13, 2023 pm 03:11 PM

HTTP 상태 코드 520은 서버가 요청을 처리하는 동안 알 수 없는 오류가 발생하여 더 구체적인 정보를 제공할 수 없음을 의미합니다. 서버가 요청을 처리하는 동안 알 수 없는 오류가 발생했음을 나타내는 데 사용됩니다. 이는 서버 구성 문제, 네트워크 문제 또는 기타 알 수 없는 이유로 인해 발생할 수 있습니다. 이는 일반적으로 서버 구성 문제, 네트워크 문제, 서버 과부하 또는 코딩 오류로 인해 발생합니다. 상태 코드 520 오류가 발생하면 웹사이트 관리자나 기술 지원팀에 문의하여 자세한 정보와 지원을 받는 것이 가장 좋습니다.

Windows 서버 백업을 설치, 제거 및 재설정하는 방법 Windows 서버 백업을 설치, 제거 및 재설정하는 방법 Mar 06, 2024 am 10:37 AM

WindowsServerBackup은 WindowsServer 운영 체제와 함께 제공되는 기능으로, 사용자가 중요한 데이터 및 시스템 구성을 보호하고 중소기업 및 대기업 수준의 기업에 완벽한 백업 및 복구 솔루션을 제공하도록 설계되었습니다. Server2022 이상을 실행하는 사용자만 이 기능을 사용할 수 있습니다. 이 문서에서는 WindowsServerBackup을 설치, 제거 또는 재설정하는 방법을 설명합니다. Windows Server 백업을 재설정하는 방법 서버 백업에 문제가 있거나 백업에 너무 오랜 시간이 걸리거나 저장된 파일에 액세스할 수 없는 경우 Windows Server 백업 설정을 재설정하는 것을 고려할 수 있습니다. Windows를 재설정하려면

웹 페이지 리디렉션의 일반적인 애플리케이션 시나리오를 이해하고 HTTP 301 상태 코드를 이해합니다. 웹 페이지 리디렉션의 일반적인 애플리케이션 시나리오를 이해하고 HTTP 301 상태 코드를 이해합니다. Feb 18, 2024 pm 08:41 PM

HTTP 301 상태 코드의 의미 이해: 웹 페이지 리디렉션의 일반적인 응용 시나리오 인터넷의 급속한 발전으로 인해 사람들은 웹 페이지 상호 작용에 대한 요구 사항이 점점 더 높아지고 있습니다. 웹 디자인 분야에서 웹 페이지 리디렉션은 HTTP 301 상태 코드를 통해 구현되는 일반적이고 중요한 기술입니다. 이 기사에서는 HTTP 301 상태 코드의 의미와 웹 페이지 리디렉션의 일반적인 응용 프로그램 시나리오를 살펴봅니다. HTTP301 상태 코드는 영구 리디렉션(PermanentRedirect)을 나타냅니다. 서버가 클라이언트의 정보를 받을 때

로컬 IP 주소 쿼리 로컬 IP 주소 쿼리 Jan 05, 2024 pm 01:42 PM

이 컴퓨터의 IP 주소를 쿼리하는 방법은 다음과 같습니다. 1. Windows 시스템에서 "시작 메뉴"를 열고 "cmd"를 검색하여 명령 프롬프트를 열고 "ipconfig"를 입력한 다음 Enter 키를 눌러 주소를 찾습니다. "IPv4 주소"라는 줄 옆에 있는 숫자는 기기의 IP 주소입니다. 2. macOS 시스템에서 화면 왼쪽 상단에 있는 Apple 아이콘을 클릭하고 "시스템 환경설정"을 선택한 다음 현재 연결된 네트워크를 찾습니다. "네트워크" 옵션에서 "고급" 버튼을 클릭하고 "TCP/IP" 탭 등에서 기기의 IP를 찾으세요.

IP는 무엇을 의미하나요? IP는 무엇을 의미하나요? Jan 05, 2024 pm 01:34 PM

IP의 일반적인 의미에는 "IP 주소", "지적 재산", "독특한 판매 포인트" 및 "독립성"이 포함됩니다. 1. IP 주소는 컴퓨터 네트워크에서 장비를 식별하고 찾는 데 사용되는 디지털 식별자입니다. 2. 지적 재산 은 다음을 의미합니다. 특허, 상표, 저작권, 영업비밀 등을 포함하여 사람들의 지적 창작물이 향유하는 권리와 이익에 대한 것입니다. 3. 고유한 판매 포인트는 경쟁사와 구별되고 고객을 유치하는 제품 또는 서비스의 고유한 특성입니다. 국가나 지역이 외부의 통제나 간섭 없이 독립적인 결정을 내리고 스스로를 관리할 수 있는 능력을 말한다.

http 요청 415 오류 해결 방법 http 요청 415 오류 해결 방법 Nov 14, 2023 am 10:49 AM

해결 방법: 1. 요청 헤더에서 Content-Type을 확인합니다. 2. 요청 본문에서 데이터 형식을 확인합니다. 3. 적절한 인코딩 형식을 사용합니다. 4. 적절한 요청 방법을 사용합니다. 5. 서버측 지원을 확인합니다.

HTTP 200 OK: 성공적인 응답의 의미와 목적을 이해합니다. HTTP 200 OK: 성공적인 응답의 의미와 목적을 이해합니다. Dec 26, 2023 am 10:25 AM

HTTP 상태 코드 200: 성공적인 응답의 의미와 목적 탐색 HTTP 상태 코드는 서버 응답 상태를 나타내는 데 사용되는 숫자 코드입니다. 그 중 상태 코드 200은 요청이 서버에 의해 성공적으로 처리되었음을 나타냅니다. 이 기사에서는 HTTP 상태 코드 200의 구체적인 의미와 사용법을 살펴보겠습니다. 먼저 HTTP 상태 코드의 분류를 이해해 보겠습니다. 상태 코드는 1xx, 2xx, 3xx, 4xx 및 5xx의 다섯 가지 범주로 나뉩니다. 그 중 2xx는 성공적인 응답을 나타냅니다. 그리고 200은 2xx에서 가장 일반적인 상태 코드입니다.

HTTP 요청 시간 초과에 대해 어떤 상태 코드가 반환됩니까? HTTP 요청 시간 초과에 대해 어떤 상태 코드가 반환됩니까? Feb 18, 2024 pm 01:58 PM

HTTP 요청 시간이 초과되고 서버는 종종 504GatewayTimeout 상태 코드를 반환합니다. 이 상태 코드는 서버가 요청을 실행할 때 요청에 필요한 리소스를 얻지 못하거나 일정 시간이 지난 후에도 요청 처리를 완료하지 못함을 나타냅니다. 5xx 시리즈의 상태 코드로, 서버에 일시적인 문제나 과부하가 발생하여 클라이언트의 요청을 올바르게 처리할 수 없음을 나타냅니다. HTTP 프로토콜에서 다양한 상태 코드는 특정한 의미와 용도를 가지며, 504 상태 코드는 요청 시간 초과 문제를 나타내는 데 사용됩니다. 고객

See all articles