[PHP] browscap 을 이용한 접속 브라우저 정보 확인
사이트 접속 브라우저 정보를 확인하기 위해 USER_AGENT 값을 이용해 정규식 등으로 처리를 하게 되는데 브라우저가 계속 추가되고 있고 USER_AGENT 값도 패턴이 일정하지 않아 정규식만으로는 브라우저 정보를 정확하게 얻어내는 것이 불가능해졌다. 이런 문제를 해결하기 위해 Browser Capabilities Project 에서 제공하는 browscap-php 이용해보려고 한다.
browscap-php : https://github.com/browscap/browscap-php/tree/2.x
3.x 버전은 아직 개발버전인 듯 하여 안정버전인 2.0.5 버전을 사용했으며 아래와 같은 비교적 간단한 코드를 작성한 후 브라우저 정보를 쉽게 확인할 수가 있었다.
<?php
ini_set('memory_limit', '-1');
require_once './lib/Browscap.php';
define('CACHE_DIR', dirname(__FILE__).'/cache');
$browscap = new phpbrowscap\Browscap(CACHE_DIR);
$browscap->updateMethod = 'cURL';
$browscap->doAutoUpdate = false;
$browscap->updateInterval = 2592000; // 30 days
//$agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240';
$agent = $_SERVER['HTTP_USER_AGENT'];
$info = $browscap->getBrowser($agent);
print_r($info);
?>
위의 코드 실행했을 때 출력된 결과이다. 보기 쉽도록 브라우저 소스보기 화면의 텍스트를 가져왔다.
stdClass Object
(
[browser_name] => Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
[browser_name_regex] => mozilla/5\.0 \(.*windows nt 10\.0.*wow64.*\) applewebkit/.* \(khtml, like gecko\) chrome/(\d)(\d)\..*safari/.*
[browser_name_pattern] => zilla/5.0 (*windows nt 10.0*wow64*) applewebkit/* (khtml, like gecko) chrome/46.*safari
[Parent] => Chrome 46.0
[Platform] => Win10
[Win64] => 1
[Comment] => Chrome 46.0
[Browser] => Chrome
[Browser_Maker] => Google Inc
[Version] => 46.0
[MajorVer] => 46
[Device_Type] => Desktop
[Device_Pointing_Method] => mouse
[MinorVer] => 0
[Win32] =>
[isMobileDevice] =>
[isTablet] =>
)
코드 실행을 위해서는 먼저 다음 첨부파일을 다운로드 한 후 압축을 풀고 계정에 업로드 한다. 그런 다음 cache 폴더에 웹서버가 파일을 작성할 수 있는 쓰기 권한이 있는지 확인한다. 쓰기 권한이 없다면 쓰기 권한을 부여해 준다.
데모 : http://codepub.net/browscap/
처음 실행하면 캐시 파일을 작성하기 위해 1분여 정도 또는 그 이상의 시간이 소요되니 느긋하게 기다리면 캐시 파일이 생성되고 화면에 브라우저 정보가 출력된다.