본문 바로가기
IT_Developers/PHP

PHP - 사용자의 제대로 된 IP 가져오는 방법 / get_client_ip()

by 고코더 2019. 4. 4.

PHP에서 IP 가져오기 IPv4


안녕하세요.
고코더 입니다.


보통은 PHP에서 사용자의 IP를 가져올때
$_SERVER 함수를 이용해 가져오는걸 많이
배웠는데 막상 웹사이트가 작동하는
서버에서는 192로 시작하는 제대로된 아이피를 가져오지 못하는걸 확인하실 수 있습니다.

PHP 사용자 IP를 검색해도 보통 서버 함수를 이용한
방법이 대다수 인거 같네요
$_SERVER['REMOTE_ADDR']; 

그래서 오늘은 실제로 가장 많이 사용하는
방식인 사용자의 아이피를 가져오는 함수를 이용해보겠습니다.

▼ 우선 아래 소스를 웹에서 확인해보세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function get_client_ip() {
    $ipaddress = '';
    if (getenv('HTTP_CLIENT_IP'))
        $ipaddress = getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED'))
        $ipaddress = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
        $ipaddress = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $ipaddress = getenv('REMOTE_ADDR');
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}
echo "SERVER 함수 사용자 아이피 : ".$_SERVER['REMOTE_ADDR'];
echo "<br>";
echo "getenv 사용자 아이피 : ".get_client_ip();
?>
cs
▼ 이걸 웹사이트상에서 확인하면
결과값은 이렇습니다.


▼ 아이피를 가져오는 함수입니다.
이 함수를 이용해서 사용자의 정보를 가져와보세요.
실무에서 가장 많이 사용하는 정석적인 함수 입니다. 
function get_client_ip() {
    $ipaddress = '';
    if (getenv('HTTP_CLIENT_IP'))
        $ipaddress = getenv('HTTP_CLIENT_IP');
    else if(getenv('HTTP_X_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
    else if(getenv('HTTP_X_FORWARDED'))
        $ipaddress = getenv('HTTP_X_FORWARDED');
    else if(getenv('HTTP_FORWARDED_FOR'))
        $ipaddress = getenv('HTTP_FORWARDED_FOR');
    else if(getenv('HTTP_FORWARDED'))
        $ipaddress = getenv('HTTP_FORWARDED');
    else if(getenv('REMOTE_ADDR'))
        $ipaddress = getenv('REMOTE_ADDR');
    else
        $ipaddress = 'UNKNOWN';
    return $ipaddress;
}




마무리


서버 환경과 설정에 따라
IP를 가져오는 방법이 다릅니다.




댓글