geoIP 추적 - geoIP 쿼리용 JSONP, 구글 태그 준비
geoIP를 수집하기 위한 작업이다. geoIP는 IP 주소와 위치 정보를 나타낸다.
해외 서비스를 이용하면 트래픽 제한으로 인해 쿼리가 안 되거나 차단될 수 있다.
그러면 본인 소유의 웹호스팅이나 웹서버를 이용해야 한다.
PHP - JSONP 생성 코드
<?php
$callback = $_GET['callback'] ?? "callback";
echo $callback . '(' . '{"ip" : "'.$_SERVER['REMOTE_ADDR'].'"}' . ')';
?>
.php 파일로 저장 후 웹서버에 업로드 한다. 파라미터는 원하는대로 꾸민다.
callback 문자열을 받는 이유는 자바스크립트에서 함수명을 중복으로 쓰지 않기 때문이다.
/api.php 또는 /api.php?callback=getIP 처럼 사용한다.
callback({"ip" : "1.2.3.4"}) // 기본
getIP({"ip" : "1.2.3.4"}) // callback 지정
쿼리 결과는 위와 같이 토해낸다. 위 내용이 <script> 코드 내에서 실행되면 자바스크립트 함수 호출로 사용되는 것이다.
위치 정보는 해외 서비스를 이용한다. iplocation.net, geoplugin.net, geolocation-db.com, ipbase.com 등의 사이트가 있다.
얻을 수 있는 정보는 ISP, 국가 코드, 국가명, 도시명, 위도, 경도 등이 있다.
<?php
echo $callback . "({
\"ip\" : \"{$_SERVER['REMOTE_ADDR']}\",
\"isp\" : \"{$json->isp}\",
\"city\" : \"{$json->geoplugin_city}\",
\"region_name\" : \"{$json->geoplugin_regionName}\",
\"country_name\" : \"{$json->geoplugin_countryName}\",
\"latitude\" : \"{$json->geoplugin_latitude}\",
\"longitude\" : \"{$json->geoplugin_longitude}\"
})";
?>
IP json 코드와 마찬가지로 필요한 항목을 JSON 형식으로 만들면 된다. 또는 배열로 만들어서 json_encode() 해도 된다.
구글 태그 관리자
임의의 태그를 만들고
태그 유형은 맞춤 HTML 을 선택한다.
HTML 항목에 아래 코드를 붙여넣는다.
<script type="application/javascript">
function getIP(json) {
ip_addr = json.ip;
}
</script>
<script type="application/javascript" src="http://userdomain/api.php?callback=getIP"></script>
GeoIP 정보는 아래처럼...
<script type="application/javascript">
function getGeoIP(json) {
User_IP = json.ip;
User_ISP = json.isp;
User_City = json.city;
User_RegionName = json.region_name;
User_CountryName = json.country_name;
User_Latitude = json.latitude;
User_Longitude = json.longitude;
}
</script>
<script type="application/javascript" src="http://yourdomain/api.php?callback=getGeoIP"></script>
함수 내에 사용된 자바스크립트 변수는 태그 관리자의 변수 메뉴에서 만든 전역 변수이다.
트리거 실행에서
트리거 유형은 페이지뷰 - DOM 사용 가능을 선택한다.
나머지는 기본 설정으로 한다.
구글 애널리틱스
보고서 - 실시간
글에서 이벤트 트리거로 설정한 링크를 누르면 실시간으로 집계 된다.
여기서 각 항목을 누르면 이벤트별 상세 정보가 나타난다.
User_CountryName 항목을 누르면
어떤 값에서 얼마나 이벤트가 발생했는지 볼 수 있다.
정상 동작하는 것을 확인했다면 보고서를 만들어 본다.