PHP에서 사용자 IP 주소 얻기

Subodh Poudel 2023년1월30일
PHP
  1. $_SERVER['REMOTE_ADDR']를 사용하여 PHP에서 사용자의 IP 주소 찾기
  2. $_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_CLIENT_IP']$_SERVER['HTTP_X_FORWARDED_FOR']를 사용하여 사용자의 IP 주소를 찾습니다
  3. 삼항 연산자 및isset()함수를 사용하여 사용자의 IP 주소 찾기
PHP에서 사용자 IP 주소 얻기

유일한 배열 요소로REMOTE_ADDR이있는$_SERVER수퍼 글로벌 변수를 사용하여 PHP의 서버에서 사용자의 IP 주소에 액세스하는 방법을 소개합니다. $_SERVER['REMOTE_ADDR']로 사용됩니다.

사용자의 IP 주소가 공유 인터넷, 프록시 또는 실제 IP 주소인지 확인하기 위해 조건식을 사용하여 PHP에서 사용자의 IP 주소에 액세스하는 또 다른 방법을 보여줍니다. 이 메소드는HTTP_CLIENT_IP,HTTP_X_FORWARDED_FORREMOTE_ADDR과 같은 배열 요소를 사용합니다.

삼항 연산자와isset()함수를 사용하여 PHP에서 사용자의 IP 주소를 가져 오는 간단한 방법을 보여 드리겠습니다. 이 메서드는 또한$_SERVER수퍼 전역 변수에서HTTP_CLIENT_IP,HTTP_X_FORWARDED_FORREMOTE_ADDR과 같은 배열 요소를 사용합니다.

$_SERVER['REMOTE_ADDR']를 사용하여 PHP에서 사용자의 IP 주소 찾기

$_SERVER['REMOTE_ADDR']표현식을 사용하여 사용자가 현재 페이지에 액세스하는 IP 주소를 찾을 수 있습니다. $_SERVER는 PHP의 수퍼 글로벌 변수이며 다양한 배열 요소를 인수로 사용합니다. 클라이언트의 실제 IP 주소에 액세스하기 위해$_SERVER변수의 배열 요소로REMOTE_ADDR을 사용합니다. $_SERVER['REMOTE_ADDR']가 모든 경우에 항상 클라이언트의 올바른 IP 주소를 제공하는 것은 아닙니다. 다른 경우에 대해서는 아래에서 설명하겠습니다. 위의 표현식이 연결의 실제 IP를 반환하도록 서버 API (SAPI)가 잘 구성되어 있는지 확인합니다.

아래 예에서는localhost가 서버로 사용됩니다. 따라서 루프백 IP 주소를 반환합니다. 루프백 주소에 대한 자세한 내용은 여기를 참조하십시오. 다음 PHP 스크립트의 URL이http://localhost/index.php라고 가정합니다. 로컬 머신의 IP 주소를::1로 출력합니다. ::1localhost의 IPv6 표현입니다.

예를 들어,$_SERVER['REMOTE_ADDR']를 변수ip_addr에 할당합니다. 그런 다음echo를 사용하여 변수를 인쇄합니다.

예제 코드 :

# php 7.x
<?php
$ip_add = $_SERVER['REMOTE_ADDR'];
echo "The user's IP address is - ".$ip_add;
?>

출력:

The user's IP address is - ::1

$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_CLIENT_IP']$_SERVER['HTTP_X_FORWARDED_FOR']를 사용하여 사용자의 IP 주소를 찾습니다

$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_CLIENT_IP']$_SERVER['HTTP_X_FORWARDED_FOR']와 같은 슈퍼 글로벌 변수$_SERVER의 배열 요소를 사용하여 다음의 IP 주소를 찾을 수 있습니다. PHP의 사용자. 사용자의 실제 IP 주소를 찾으려면$_SERVER['REMOTE_ADDR']를 사용하십시오. 사용자가 공유 인터넷에서 페이지에 액세스 할 때 IP 주소를 찾으려면$_SERVER['HTTP_CLIENT_IP']를 사용합니다. 사용자가 프록시를 사용하여 웹 페이지에 액세스 할 때$_SERVER['HTTP_X_FORWARDED_FOR']를 사용하여 IP 주소를 찾습니다. HTTP_X_FORWARDED_FORHTTP_CLIENT_IP와 같은 헤더는 누구나 설정할 수 있으므로 스푸핑 될 수 있습니다. 때로는 클라이언트의 실제 IP 주소를 나타내지 않을 수 있습니다.

예를 들어,empty()함수를 사용하여$_SERVER['HTTP_CLIENT_IP']에 내용이 포함되어 있는지 확인합니다. 포함 된 경우$ip변수에 vale을 할당하고 i를 인쇄합니다.
다시$_SERVER['HTTP_X_FORWARDED_FOR']에 대한 확인을 수행하고 값을 할당하고 존재하는 경우 인쇄합니다. $_SERVER['REMOTE_ADDR']에서 유사한 작업을 수행합니다.

아래 예: $_SERVER['REMOTE_ADDR']는 사용자가 프록시 또는 공유 인터넷 연결을 사용하지 않으므로 IP 주소를 반환합니다. PHP Manual을 확인하십시오.server.php)에서 $_SERVER 어레이에 대해 자세히 알아보십시오.

예제 코드 :

#php 7.x
<?php if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    echo $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    echo $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    echo $ip = $_SERVER['REMOTE_ADDR'];
}
?> 

출력:

 ::1

삼항 연산자 및isset()함수를 사용하여 사용자의 IP 주소 찾기

삼항 연산자를 사용하여 PHP에서 사용자의 IP 주소를 찾는 약식 방법을 사용할 수 있습니다. 이 메소드에서isset()메소드는 배열에 지정된 요소 또는 헤더 파일이 포함되어 있는지 확인합니다.

예를 들어,isset()함수를 사용하여 배열에HTTP_CLIENT_IP가 포함되어 있는지 확인합니다. 조건이 참이면HTTP_CLIENT_IP가 설정됩니다. 그런 다음 조건이 실패하면isset()함수를 사용하여 배열에HTTP_X_FORWARDED_FOR가 포함되어 있는지 확인합니다. 마찬가지로 조건이 참이면HTTP_X_FORWARDED_FOR이 설정되고 조건이 실패하면REMOTE_ADDR이 설정됩니다.

아래 예에서 클라이언트는 프록시 또는 공유 인터넷을 사용하지 않습니다. 따라서 $_SERVER['REMOTE_ADDR']이 실행됩니다. 3차 운영자에 대해 알아보려면 MSDN 웹 문서)를 확인하십시오.

예제 코드 :

#php 7.x
<?php
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
echo "The user IP Address is - ". $ip;
?>

출력:

The user IP Address is - ::1
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn