PHP로 IP 주소 얻기

PHPz
풀어 주다: 2024-08-29 13:07:16
원래의
682명이 탐색했습니다.

'PHP에서 IP 주소 받기'를 배우기 위해 먼저 IP 주소에 대해 공부하겠습니다. IP 주소 또는 인터넷 프로토콜 주소는 네트워크에 연결된 모든 시스템이나 장치가 가지고 있는 숫자 주소 또는 레이블인 주소입니다. IP 주소는 이러한 모든 장치에 할당됩니다. 이러한 장치는 모든 유형의 통신에 인터넷 프로토콜을 사용합니다.

광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

IP 버전

아래 포인트 설명 IP 버전:

  • IP 버전은 인터넷 프로토콜 레이블의 비트에 따라 정의됩니다. 예를 들어 이전 버전인 IPv4는 32비트 숫자의 인터넷 프로토콜 주소를 정의합니다. 인터넷이 성장하면서 128비트 숫자 IP 레이블을 정의하는 IPv6가 등장했습니다. IPv6는 1995년부터 현재까지 사용되고 있습니다. 인터넷 프로토콜 주소는 사람이 이해할 수 있는 언어로 작성됩니다. IPv4의 예는 170.17.260.2이고 IPv6의 예는 2001:db8:2:1434:1:587:5:2입니다.
  • 인터넷 프로토콜 주소로 확보한 공간은 전역적으로 관리됩니다. 다른 5개 지역 레지스트리와 함께 Internet Assigned Numbers Authority라는 레지스트리를 사용하면 인터넷 프로토콜 주소에 대한 공간 관리가 가능해집니다. IANA는 지정된 지역이나 영역에 있는 모든 최종 사용자 및 기타 인터넷 제공자에게 인터넷 프로토콜 주소 공간을 할당하고 관리하는 일을 담당합니다. 마찬가지로 인터넷 서비스 제공업체 네트워크에 연결된 모든 장치에는 고유한 인터넷 프로토콜 주소가 할당됩니다.
  • 자주 변경되지 않는 고정 인터넷 프로토콜 주소가 있으며, 서버에 제공됩니다. 인터넷 서비스 제공업체는 모뎀을 사용하는 컴퓨터에 구체적이고 고유한 인터넷 프로토콜 주소를 제공합니다. 해당 IP 주소는 세션마다 고유하며 다음 세션에서는 변경될 수 있습니다.

PHP에서 IP 주소 식별 및 반환

보안상의 이유로 사이트는 사이트 방문자의 IP 주소를 수집합니다. PHP에서 이 주소를 얻는 쉬운 방법이 있습니다. PHP에는 컴퓨터의 IP 주소를 돕고 반환하는 특정 배열이 있습니다. 배열은 '$_SERVER'로 알려져 있습니다. 여기에는 경로, 헤더 및 스크립트 위치에 대한 정보가 포함되어 있습니다. 웹 서버는 $_SERVER 배열에 필요한 정보를 생성합니다. 때때로 서버는 어레이에 필요한 모든 정보를 생성하거나 제공하지 않으며 일부 정보를 생략할 수도 있습니다. 따라서 이러한 경우에 사용할 수 있는 또 다른 배열이 있습니다. 'SERVER_ADDR'로 작성됩니다. 이 배열은 스크립트가 실행되는 서버의 IP 주소를 반환합니다.

PHP에서 IP 주소를 가져오는 데 사용되는 방법

다음은 PHP에서 IP 주소를 가져오는 데 사용되는 예입니다.

예 #1

가장 간단한 방법은 'REMOTE_ADDR'과 함께 $_SERVER를 사용하는 것입니다. 현재 페이지를 보고 있는 사용자의 IP 주소를 반환합니다.

  • PHP에서 서버의 IP 주소를 식별하기 위해 ['REMOTE_ADDR']을 사용하는 예

코드:

<?php
echo 'User IP - '.$_SERVER['REMOTE_ADDR'];
?>
로그인 후 복사

출력:

PHP로 IP 주소 얻기

예시 #2

'SERVER_ADDR'이라는 또 다른 방법은 서버의 IP 주소를 검색하는 데에도 사용됩니다. 

  • PHP에서 서버의 IP 주소를 식별하기 위해 ['SERVER_ADDR']을 사용하는 예

코드:

<?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";
?>
로그인 후 복사

출력:

PHP로 IP 주소 얻기

위 프로그램에 대한 설명: 위의 예시 배열 [$_SERVER]는 머신이 프록시를 통해 연결되지 않는다는 점에서 유용합니다. 머신이 프록시 서버를 통해 인터넷에 연결된 경우 PHP의 $_SERVER['REMOTE_ADDR']는 올바른 IP 주소를 반환하지 않습니다. 단지 프록시 서버와 사용자 또는 클라이언트 컴퓨터의 IP 주소를 반환합니다. 이런 상황에서는 올바른 주소를 검색하기 위해 다른 방법이 사용됩니다.

예시 #3

다음 예는 컴퓨터가 프록시 서버 뒤에 숨어 있는 경우에도 올바른 실제 IP 주소를 반환하는 데 사용됩니다. 클라이언트 시스템이나 시스템의 정확한 IP 주소를 가져오는 데 사용할 수 있는 추가 SERVER 변수 쌍을 사용합니다. 이는 HTTP_CLIENT_IP 및 HTTP_X_FORWARDED_FOR로 알려져 있습니다.

  • PHP에서 서버의 IP 주소를 식별하기 위해 ['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();
?>
로그인 후 복사

출력:

PHP로 IP 주소 얻기

위 코드의 동작 흐름을 이해하려면 다음 흐름도를 참조하면 됩니다.

PHP로 IP 주소 얻기

위 프로그램에 대한 설명: 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)로 표시되는 루프백 주소로 알려져 있습니다. 적어보자면 다음과 같습니다.

PHP로 IP 주소 얻기

2. 하지만 IPv6에서는 이 큰 레이블을 짧은 형식으로 표현할 수 있습니다. 따라서 단일 블록에 모두 0이 있으면 단일 0으로 대체할 수 있습니다. 따라서 위의 규칙을 따르면 다음과 같습니다. 0:0:0:0:0:0:0:0001;

PHP로 IP 주소 얻기

3. 이번에도 0을 제거하면 다음과 같은 결과가 남습니다:: 0001

PHP로 IP 주소 얻기

4. 다시 ':: 1'으로 축소되어 출력됩니다.

위 코드에 대한 설명: 실행하도록 만든 경우 개인 도메인은 인터넷 프로토콜 주소를 제공하지 않으므로 출력이 제공되지 않거나 런타임 오류가 반환될 수 있습니다. 위의 코드가 WAMP 서버를 사용한 것처럼 로컬 서버나 로컬 호스트에서 실행되면 IP 버전에 따라 출력됩니다. 즉, IPv4인 경우 인터넷 프로토콜 주소는 다음과 같습니다. '127:0:0:1'로 표시되지만 IPv6인 경우 인터넷 프로토콜 주소는 위와 같이 '::1'로 표시됩니다.

위 내용은 PHP로 IP 주소 얻기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!