개발
PHP 공인 IP 주소 얻어오기
⚠ 이 글은 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 주소는 정말 url 답게 별도의 링크 태그로 변환해줍니다. 특이점이라면 사용자는 태그 고려 전혀 안하고 url만 평범하게 입력하면 뒷단에서 처리해준다는 점이죠. 좀 더 응용한다면 url 주소가 추출된 정보로...
03/04/2019
PHP 시간 차 계산
현재시간을 기준으로 서비스의 제공 유무를 판단할 때 구해야 하는 시간 차를 계산하는 코드입니다. timestamp값을 이용해 시간차를 반환할 수 있도록 PHP의 intval 메소드를 활용해 만들어봅시다.반환된 timestamp 값의 크기는 흔히 서비스에서 이용해야되는 초/분/시간/일 단위가 아니므로 필요에 따라 원하는 시간 규격...
03/04/2019
PHP 배열, 다중배열속의 값 검사
PHP는 배열안의 데이터를 검사하는 메소드가 언어에서 지원해주는것이 있습니다. 검사할 데이터와 대상 배열을 파라미터로 전달해주면 배열을 순차적으로 검사 후 데이터의 유무에 따라 논리값을 반환해요.거기에 좀만 응용해서 다시 메소드로 감싸서 논리값에 따라 내가 필요한 결과 스트링값을 아래와 같이 바꿔줄 수 있...