영원한사랑

미리보기 : http://oxtag.com/php/p/os_browser_check.php


<?
/*
http_user_agent를 이용한 client의 os와 web brower를 체크
*/

/////////////////////////////////////os정보를 가져오는 함수 
function set_os($os){ 
global
$os_version,$os_name,$array
$os_version=""

    for(
$i=0;$i<sizeof($array);$i++){ 
       
$j=$i+1
        if(
eregi("$os",$array[$i]) && eregi("^[0-9]{1,2}([.]{1}[0-9]{1,2})*[a-z]{0,1}$",$array[$j])){ 
       
$os_version=$array[$j]; 
        }     
    } 


/////////////////////////////////////browser정보를 가져오는 함수 
function set_br($br){ 
global
$br_version,$br_name,$array
$br_version=""

    for(
$i=0;$i<sizeof($array);$i++){ 
       
$j=$i+1
        if(
eregi("$br",$array[$i]) && eregi("^[0-9]{1,2}([.]{1}[0-9]{1,2})*[a-z]{0,1}$",$array[$j])){ 
       
$br_version=$array[$j]; 
        }     
    } 


/////////////////////////////////////os와 browser를 체크하는 함수 
function check_agent(){ 
global
$HTTP_USER_AGENT,$os_name,$os_version,$br_version,$br_name,$array

$temp=$HTTP_USER_AGENT
$temp=eregi_replace("([ 0-9.])*%","",$temp); 
$temp=trim(eregi_replace("-|_|=|+|;"," ",$temp)); 

$array=split(" ",$temp); 

if(
eregi("([a-z])+/",$array[0])){$br_version_temp=split("/",$array[0]);} 
$br_version_temp=$br_version_temp[1]; 

if(
eregi("Win|Window",$temp)){ 
$os_name="Windows"

    if(
ereg("s 3.1|n3.1",$temp)){ 
   
$os_version="3.1"
    } 

    if(
ereg("s 95|n95",$temp)){ 
   
$os_version="95"
    } 

    if(
ereg("s 98|n98",$temp)){ 
   
$os_version="98"
    }     

    if(
ereg("s ME|nME",$temp)){ 
   
$os_version="ME"
    } 

    if(
ereg("s NT|nNT",$temp)){ 
   
$os_version="NT"
    } 

    if(
ereg("s NT|nNT",$temp) && eregi("T 5.0| 2000",$temp)){ 
   
$os_version="2000"
    } 

    if(
ereg("s NT|nNT",$temp) && eregi("T 5.1| XP",$temp)){ 
   
$os_version="XP"
    } 


elseif(
eregi("Mac PowerPC|PPC",$temp)){ 
$os_name="Mac PowerPC"
set_os("Mac powerPC"); 


elseif(
eregi("Mac",$temp)){ 
$os_name="Macintosh"
set_os("Mac"); 


elseif(
eregi("Linux",$temp)){ 
$os_name="Linux"
set_os("Linux"); 
}  

elseif(
eregi("IRIX",$temp)){ 
$os_name="IRIX"
set_os("IRIX"); 


elseif(
eregi("sunOS",$temp)){ 
$os_name="sunOS"
set_os("sunOS"); 


elseif(
eregi("phone",$temp)){ 
$os_name="CellPhone"
set_os("phone"); 


else{
$os_name="Unknown";$os_version="";} 


if(
eregi("MSN",$temp)){ 
$br_name="MSN"
set_br("MSN"); 


elseif(
eregi("MSIE",$temp)){ 
$br_name="MSIE"
set_br("MSIE"); 


elseif(
eregi("([){1}[a-z]{1,3}(]){1}",$temp) && eregi("]",$temp)){ 
$br_name="Netscape"
$br_version=$br_version_temp


elseif(
eregi("opera",$temp)){ 
$br_name="Opera"
set_br("opera"); 
if(!
$br_version){$br_version=$br_version_temp;} 


elseif(
eregi("gec|gecko",$temp)){ 
$br_name="Gecko"
set_br("Gecko"); 
if(!
$br_version){$br_version=$br_version_temp;} 


elseif(
eregi("MSMB",$temp)){ 
$br_name="MSMB"


else{
$br_name="Unknown";} 
}
?>


프로그램에 사용하기 위해 HTTP_USER_AGENT를 이용한 방문자의 OS와 web browser를 체크하는 함수를 만들어 보았습니다.

HTTP_USER_AGENT에 대한 여러가지 패턴과 정보에 대해 약 1000여개의 HTTP_USER_AGENT 결과를 체크하여 제작 하였습니다.



<?

/////////////////////////////////////체크 함수 호출
check_agent();
/////////////////////////////////////출력
echo "
OS : $os_name $os_version <br>
Browser : $br_name $br_version
"
;
?>



태그 : 브라우저, os, 운영체제, 아이피, browser