logo

공인 IP 주소 얻어오기

2019. 03. 05.

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

 

시간 차 계산

시간 차 계산

2019. 03. 04.
배열, 다중배열속의 값 검사

배열, 다중배열속의 값 검사

2019. 03. 04.
Ajax를 이용해 Post 요청하는 방법들

Ajax를 이용해 Post 요청하는 방법들

2018. 12. 31.
개행문자(엔터)나 특정 태그를 제거하는 방법

개행문자(엔터)나 특정 태그를 제거하는 방법

2018. 12. 31.
랜덤으로 한글이름 생성하기

랜덤으로 한글이름 생성하기

2018. 12. 27.
로그 더 보기