HTTP_USER_AGENT를 사용해서 모바일 접속환경 구분하기
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) { |
비교할 문자열은 아래 링크에서 찾아볼 수 있다.
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 |