공인 IP 주소 얻어오기
PHP 상에서 IP 주소를 얻어오는 방법은 생각보다 참으로 많습니다.
쉽게 접근할 수 있는것이 $_SERVER['REMOTE_ADDR'] 이긴 합니다만...
이 방법으로하면 클라이언트 쪽에서 데이터를 숨길수도 있고 또 사설 아이피망에서 접속하면 가끔 그 사설 IP가 반환됩니다. (무엇)
뭐 사용자의 IP를 추적해서 뭘 하겠다는것은 아닌데 내 웹서버가 어디에서 접속이 많이 되는지 분석하고 서비스 대응을 하는 관점에선 클라이언트의 IP정보도 무시못하는 정보 중 하나이긴하죠.
사실 이런 대부분의 기능은 직접 구현하기보다는 애널리틱스를 통해 이용하는것이 훨씬 마케팅이나 관리측면에서 유의미한 정보를 얻을 수 있긴합니다.
그래서 백엔드단에서 IP 정보가 필요한 경우는 관리목적보다 기능적 목적이 많긴하죠.
각설하고 스택오버플로우에도 최다 추천 답변으로 등록된 아래와 같은 방법으로 클라이언트의 공인 IP를 그나마 쉽게 가져올 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php
/**
* 접속자의 아이피 주소를 알아내어 반환합니다.
* 공인 IP주소가 나옵니다.
* @return array|false|string
*/
function get_client_ip() {
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;
}
|
cs |
D.2019-03-05
V.7