개발
백엔드
PHP 공인 IP 주소 얻어오기
736 views as of March 5, 2019.
⚠ 이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
PHP 상에서 IP 주소를 얻어오는 방법은 생각보다 참으로 많습니다.
쉽게 접근할 수 있는것이 $_SERVER['REMOTE_ADDR'] 이긴 합니다만...
이 방법으로하면 클라이언트 쪽에서 데이터를 숨길수도 있고 또 사설 아이피망에서 접속하면 가끔 그 사설 IP가 반환됩니다. (무엇)
뭐 사용자의 IP를 추적해서 뭘 하겠다는것은 아닌데 내 웹서버가 어디에서 접속이 많이 되는지 분석하고 서비스 대응을 하는 관점에선 클라이언트의 IP정보도 무시못하는 정보 중 하나이긴하죠.
사실 이런 대부분의 기능은 직접 구현하기보다는 애널리틱스를 통해 이용하는것이 훨씬 마케팅이나 관리측면에서 유의미한 정보를 얻을 수 있긴합니다.
그래서 백엔드단에서 IP 정보가 필요한 경우는 관리목적보다 기능적 목적이 많긴하죠.
각설하고 스택오버플로우에도 최다 추천 답변으로 등록된 아래와 같은 방법으로 클라이언트의 공인 IP를 그나마 쉽게 가져올 수 있습니다.
<?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;
}
Copy
#php
0
개의 댓글
백엔드 콜렉션의 다른 글
개발 카테고리의 다른 글
03/05/2019
PHP 문자열 중 url만 걸러내서 태그를 씌워 반환
게시글 내용이나 댓글 내용등에 url이 있다면 해당 문자열을 추출해 특정 태그를 씌워 반환하는 코드입니다. url 주소는 정말 ur...
03/04/2019
PHP 시간 차 계산
현재시간을 기준으로 서비스의 제공 유무를 판단할 때 구해야 하는 시간 차를 계산하는 코드입니다. timestamp값을 이용해 시간...
03/04/2019
PHP 배열, 다중배열속의 값 검사
PHP는 배열안의 데이터를 검사하는 메소드가 언어에서 지원해주는것이 있습니다. 검사할 데이터와 대상 배열을 파라미터로 전달...