'PHP에서 IP 주소 받기'를 배우기 위해 먼저 IP 주소에 대해 공부하겠습니다. IP 주소 또는 인터넷 프로토콜 주소는 네트워크에 연결된 모든 시스템이나 장치가 가지고 있는 숫자 주소 또는 레이블인 주소입니다. IP 주소는 이러한 모든 장치에 할당됩니다. 이러한 장치는 모든 유형의 통신에 인터넷 프로토콜을 사용합니다.
광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
아래 포인트 설명 IP 버전:
보안상의 이유로 사이트는 사이트 방문자의 IP 주소를 수집합니다. PHP에서 이 주소를 얻는 쉬운 방법이 있습니다. PHP에는 컴퓨터의 IP 주소를 돕고 반환하는 특정 배열이 있습니다. 배열은 '$_SERVER'로 알려져 있습니다. 여기에는 경로, 헤더 및 스크립트 위치에 대한 정보가 포함되어 있습니다. 웹 서버는 $_SERVER 배열에 필요한 정보를 생성합니다. 때때로 서버는 어레이에 필요한 모든 정보를 생성하거나 제공하지 않으며 일부 정보를 생략할 수도 있습니다. 따라서 이러한 경우에 사용할 수 있는 또 다른 배열이 있습니다. 'SERVER_ADDR'로 작성됩니다. 이 배열은 스크립트가 실행되는 서버의 IP 주소를 반환합니다.
다음은 PHP에서 IP 주소를 가져오는 데 사용되는 예입니다.
가장 간단한 방법은 'REMOTE_ADDR'과 함께 $_SERVER를 사용하는 것입니다. 현재 페이지를 보고 있는 사용자의 IP 주소를 반환합니다.
코드:
<?php echo 'User IP - '.$_SERVER['REMOTE_ADDR']; ?>
출력:
'SERVER_ADDR'이라는 또 다른 방법은 서버의 IP 주소를 검색하는 데에도 사용됩니다.
코드:
<?php // PHP program to retrieve server’s Internet Protocol address // Creating a variable to store the server address $ip_server = $_SERVER['SERVER_ADDR']; // Displaying the retrieved address echo "Server IP Address is: $ip_server"; ?>
출력:
위 프로그램에 대한 설명: 위의 예시 배열 [$_SERVER]는 머신이 프록시를 통해 연결되지 않는다는 점에서 유용합니다. 머신이 프록시 서버를 통해 인터넷에 연결된 경우 PHP의 $_SERVER['REMOTE_ADDR']는 올바른 IP 주소를 반환하지 않습니다. 단지 프록시 서버와 사용자 또는 클라이언트 컴퓨터의 IP 주소를 반환합니다. 이런 상황에서는 올바른 주소를 검색하기 위해 다른 방법이 사용됩니다.
다음 예는 컴퓨터가 프록시 서버 뒤에 숨어 있는 경우에도 올바른 실제 IP 주소를 반환하는 데 사용됩니다. 클라이언트 시스템이나 시스템의 정확한 IP 주소를 가져오는 데 사용할 수 있는 추가 SERVER 변수 쌍을 사용합니다. 이는 HTTP_CLIENT_IP 및 HTTP_X_FORWARDED_FOR로 알려져 있습니다.
코드:
<?php function RetrieveUserIP() { if(!empty($_SERVER['HTTP_CLIENT_IP'])) { $address=$_SERVER['HTTP_CLIENT_IP']; } elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $address=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $address=$_SERVER['REMOTE_ADDR']; } return $address; } echo 'User IP Address is'.RetrieveUserIP(); ?>
출력:
위 코드의 동작 흐름을 이해하려면 다음 흐름도를 참조하면 됩니다.
위 프로그램에 대한 설명: IP 주소를 검색하는 위의 예에서는 ['HTTP_CLIENT_IP'] 및 ['HTTP_X_FORWARDED_FOR']라는 두 변수를 사용합니다. 프로그램에서는 HTTP_CLIENT_IP를 사용하여 머신에서 직접 꺼내려는 첫 번째 시도를 합니다. 사용할 수 없는 경우 HTTP_X_FORWARDD_FOR을 사용하여 '전달 대상' IP를 시도합니다. 두 조건이 모두 null이면 REMOTE_ADDR 변수를 사용하여 IP 주소를 가져옵니다.
다음 사항은 PHP에서 IP 주소 가져오기에 대해 기억해야 합니다.
1. 위 코드를 실행하면 반환된 IP 주소가::1로 표시됩니다. 이것은 실제로 127번의 0과 그 뒤에 오는 1(0000…. 127번….1)로 표시되는 루프백 주소로 알려져 있습니다. 적어보자면 다음과 같습니다.
2. 하지만 IPv6에서는 이 큰 레이블을 짧은 형식으로 표현할 수 있습니다. 따라서 단일 블록에 모두 0이 있으면 단일 0으로 대체할 수 있습니다. 따라서 위의 규칙을 따르면 다음과 같습니다. 0:0:0:0:0:0:0:0001;
3. 이번에도 0을 제거하면 다음과 같은 결과가 남습니다:: 0001
4. 다시 ':: 1'으로 축소되어 출력됩니다.
위 코드에 대한 설명: 실행하도록 만든 경우 개인 도메인은 인터넷 프로토콜 주소를 제공하지 않으므로 출력이 제공되지 않거나 런타임 오류가 반환될 수 있습니다. 위의 코드가 WAMP 서버를 사용한 것처럼 로컬 서버나 로컬 호스트에서 실행되면 IP 버전에 따라 출력됩니다. 즉, IPv4인 경우 인터넷 프로토콜 주소는 다음과 같습니다. '127:0:0:1'로 표시되지만 IPv6인 경우 인터넷 프로토콜 주소는 위와 같이 '::1'로 표시됩니다.
위 내용은 PHP로 IP 주소 얻기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!