Web/PHP

[PHP] userAgent 디바이스 구분하기

projin 2019. 9. 7. 22:40

웹 브라우저와 OS의 수는 수없이 많다. 웹 브라우저만 해도 모질라 파이어폭스, 구글 크롬, 애플 Safari, MS 인터넷 익스플로러 등이 있고, 최근에는 OS의 다변화도 이루어져 MS 윈도우 말고도 안드로이드iOS 등 모바일 플랫폼용 OS도 많이 출시되었다.


여기서 웹페이지에 접속할 때 각 플랫폼에 맞는 페이지, 즉 모바일 페이지나 데스크탑용 페이지로 연결하려면 거기에 맞는 정보가 필요한데, 그 정보가 바로 사용자 에이전트이다.

 

아래는 userAgent의 샘플이다

 

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36

 

userAgent를 가져와서 간단하게 모바일 디바이스를 구분하는 함수 소스이다.

<?php
/* 모바일 에이전트 구분 */

function isMobile(){ 
    $useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; 
    $useragent_commentsblock=preg_match('|\(.*?\)|',$useragent,$matches)>0?$matches[0]:'';       

	function CheckSubstrs($substrs,$text){ 
        foreach($substrs as $substr) 
            if(false!==strpos($text,$substr)){ 
                return true; 
            } 
            return false; 
    }

    $mobile_os_list=array('Google Wireless Transcoder','Windows CE','WindowsCE','Symbian','Android','armv6l','armv5','Mobile','CentOS','mowser','AvantGo','Opera Mobi','J2ME/MIDP','Smartphone','Go.Web','Palm','iPAQ');
    $mobile_token_list=array('Profile/MIDP','Configuration/CLDC-','160×160','176×220','240×240','240×320','320×240','UP.Browser','UP.Link','SymbianOS','PalmOS','PocketPC','SonyEricsson','Nokia','BlackBerry','Vodafone','BenQ','Novarra-Vision','Iris','NetFront','HTC_','Xda_','SAMSUNG-SGH','Wapaka','DoCoMo','iPhone','iPod');   
    $found_mobile=CheckSubstrs($mobile_os_list,$useragent_commentsblock) || CheckSubstrs($mobile_token_list,$useragent); 

           
    if ($found_mobile){ 
        return true; 
    }else{ 
        return false; 
    } 
}

if (isMobile()){
    header('location: ./app/index.php');
}
else{
    header('location: ./web/index.php');
}
?>