HTTP_USER_AGENT를 사용해서 모바일 접속환경 구분하기

프로그래밍/PHP|2015. 1. 27. 11:24
반응형

PHP의 전역변수 중에 '$_SERVER['HTTP_USER_AGENT']'라는 게 있다. 유저의 브라우저 접속환경을 파악하는 데 사용되어지는 변수인데, 이것으로 브라우저별로 스타일을 다르게 보여지게 하거나 필요한 동작을 요청할 수 있다.

 

최근에 모바일 기기로 홈페이지에 접속하는 사람들이 늘면서, PC의 웹브라우저 뿐만 아니라 이 모바일 기기별로도 구분을 해줘야 하는 일이 생기게 되었다.

 

그럼 어떻게 구분을 할 수 있을까?

 

아이폰4로 접속했을 경우,

 

echo $_SERVER['HTTP_USER_AGENT'];    // Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; ko-kr) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7

 

유저 에이전트를 찍어보면 위와 같이 접속 브라우저의 정보가 출력된다. 이것으로 다음과 같이 문자열을 뽑아 매칭해보자.

 

첫 번째 방법으로는 preg_match 함수로 정규식을 사용하는 방법이 있다.

 

preg_match('/(iPhone|Android|Opera Mini|webOS)/i'$_SERVER['HTTP_USER_AGENT'])

 

사용예제

if(preg_match('/(iPhone|Android|Opera Mini|SymbianOS|Windows CE|BlackBerry|Nokia|SonyEricsson|webOS|PalmOS)/i'$_SERVER['HTTP_USER_AGENT'])) {
    $리다이렉트 = "어디로든지 가버렷!";
}

 

두 번째 방법으로는 strpos 함수로 문자열을 뽑아내는 방법이 있을 수 있다.


strpos($_SERVER['HTTP_USER_AGENT']'iPhone')

strpos($_SERVER['HTTP_USER_AGENT']'Android')

.

.

.

 

사용예제

if(strpos($_SERVER['HTTP_USER_AGENT']'iPhone') !== false) {
    $리다이렉트 = "아이폰만 볼 수 있는 페이지임 ㅋㅋ";
else if(strpos($_SERVER['HTTP_USER_AGENT']'Android') !== false) {
    $리다이렉트 = "요건 안드로이드만 볼 수 있는 페이지임 ㅋㅋㅋ";
else {
    $리다이렉트 = "......넌 누구냐?";
}

 

비교할 문자열은 아래 링크에서 찾아볼 수 있다.
http://www.zytrax.com/tech/web/mobile_ids.html

 

구분해낼 모바일 기기가 적을 경우 두 번째 방법이 낫겠고, 모두 다 혹은 다수의 기기를 한꺼번에 구분하고자 한다면 첫 번째 방법이 좋겠다.

 

 

[출처] Rearviewmirror | 김말고 (http://rearviewmirror.co.kr/70107414805)

반응형

'프로그래밍 > PHP' 카테고리의 다른 글

[PHP] 보안 국내 IP 대역만 접속 하도록 응용  (0) 2015.01.27
현재 페이지 URL 주소 알아내기  (0) 2015.01.27
자리수 채우기 str_pad  (0) 2015.01.27
php $_SERVER[]  (0) 2015.01.27
SUBSTR 함수 사용법  (0) 2015.01.27

댓글()