Tag Archives: gaAccount

[PHP] Javascript를 사용할수 없는 환경에서 Google Analytics에 로그 쌓기

Google Analytics는 무료로 사용가능하면서도 매우 강력한 그리고 엄청난 트래픽도 가감없이 처리하여 보여주는 매우 멋진 서비스입니다. 기본적으로 브라우저위에서 동작하며 Javascript를 이용하여 로그를 쌓습니다. 그렇기 때문에 웹브라우저 기반의 서비스가 아닌이상은 이용할수가 없습니다. 좀더 정정해서 말해보자면 이용하기가 쉽지 않습니다. 하지만 역시나 다양한 방법이 존재하더군요. 제가 사용하는 방식을 기억용으로 간단히 기록해 두겠습니다.

웹 서비스 등록 후 PHP 사용으로 변경

사용자 삽입 이미지Analytics 서비스의 가입이나 설정 메뉴에 들어가는 루트등에 대한 언급은 하지 않겠습니다. 추적코드 설정에 들어가게 되면 고급탭에서 모바일 사이트를 선택하실 수 있습니다. 여기서 PHP를 선택하도록 합니다. 이 경우 오른쪽에 자동으로 소스 코드가 생성되는데요 여기서 $GA_ACCOUNT값을 잘 적어둡니다. 여기서 중요한점은 모바일용 GA_ACCOUNT의 값은 MO로 시작합니다.

로깅용 소스코드 작성

[code]// 다음의 값들을 적절하게 정의하여 줍니다.
$deviceOS = ‘[OS정의 (예: iOS/Android)]’;
$userId = ‘[사용자를 식별하기 위한 구분자]’;
$defaultHostName = ‘[로깅을 위한 기본 호스트 도메인]’;
$description = ‘[하나의 로그에 대한 설명, 한글 가능]’;
$gaAccount = ‘[위에서 적어둔 $GA_ACCOUNT값]’;

// 사용자 정보가 없을 경우 랜덤하게 생성
if($userId == null) $userId = uniqid();

// 로깅용 주요 정보 정의
$referer = (!empty($_SERVER[‘HTTP_REFERER’])) ? $_SERVER[‘HTTP_REFERER’] : ‘-‘;
$path = array_shift(explode(“?”, $_SERVER[‘REQUEST_URI’]));
$randomNumber = rand(0, 0x7fffffff);
$timestamp = time();
$domainName =  (!empty($_SERVER[‘SERVER_NAME’])) ? $_SERVER[‘SERVER_NAME’] : $defaultHostName;
$remoteAddress  = $_SERVER[‘REMOTE_ADDR’];

// 구글에서 사용하는 아이피 정보는 C클래스까지만 사용하고 마지막 자리수는 0으로 교체
$regex = “/^([^.]+\.[^.]+\.[^.]+\.).*/”;
$ip = (preg_match($regex, $remoteAddress, $matches)) ? $matches[1] . ‘0’ : ”;

// 사용자 식별 아이디 값 생성
$message = md5($userId);
$visitorId = ‘0x’.substr($message, 0, 16);

// 구글에 요청할 URL 생성
$utmUrl = ‘http://www.google-analytics.com/__utm.gif?’
. ‘utmwv=4.4sh’
. ‘&utmn=’ . $randomNumber
. ‘&utmhn=’ . urlencode($domainName)
. ‘&utmr=’ . urlencode($referer)
. ‘&utmp=’ . urlencode($path)
. ‘&utmac=’ . $gaAccount
. ‘&utmcc=__utma%3D999.999.999.999.999.1%3B’
. ‘&utmvid=’ . $visitorId
. ‘&utmip=’ . $ip
. ‘&utmdt=’ . urlencode($description);

$options = array(
‘http’ => array(
‘method’ => ‘GET’,
‘user_agent’ => $deviceOS,
‘header’ => ‘Accepts-Language: ko’,
‘timeout’ => 1));

$result = @file_get_contents($utmUrl, false, stream_context_create($options));[/code]
위의 코드에서 $utmUrl 주소를 생성할때 다양한 값을 추가할 수 있습니다. [이곳]을 참고하시면 추가적인 정보를 확인해 보실 수 있습니다. 위에서 사용되는 $userId의 경우에는 하나의 값에 대하여 한명의 유니크 방문자로 처리가 되므로 신중이 마구 생성되지 않을 값을 지정해 주셔야 합니다.

위와 같은 복잡한 방법이 귀찮으신 분들에겐 잘 만들어진 [PHP 라이브러리]도 존재합니다.