CODE CAVE

PHP로 간단하게 모바일 기기 체크하기 본문

Web/Back-End

PHP로 간단하게 모바일 기기 체크하기

코드케이브 2016. 7. 28. 01:29


이번 포스팅에는 모바일 기기 체크 하는 방법 중에도 PHP로 하는 방법을 공유하고자 합니다.


보통 접속 기기의 종류는 자바스크립트에서 많이들 확인 하실거라고 생각이 되는데


RestAPI 방식이나 MVC로 로직이 분리가 되어있는 서버가 있을 경우 클라이언트(뷰) 단인 자바스크립트가 아니라 컨트롤러가 뷰로 데이터를 넘길때 여기에서 요청한 쪽의 헤더를 보고 모바일인지 데스크탑인지 확인하여 각기 다른 데이터를 리턴하면 될 것 같습니다.


다시 말해, 새 API를 아예 새로 받는 것보다 컨트롤러에서 return [view] 했던 것을 모바일 기기인지 체크하여 모바일이면 json 반환, PC면 뷰를 반환하도록 처리하면 구지 두번 작업하지 않아도 될 것입니다.



생각보다 단순합니다.


소스는 아래와 같습니다.


//Check Mobile
$mAgent = array("iPhone","iPod","Android","Blackberry",
"Opera Mini", "Windows ce", "Nokia", "sony" );
$chkMobile = false;
for($i=0; $i<sizeof($mAgent); $i++){
if(stripos( $_SERVER['HTTP_USER_AGENT'], $mAgent[$i] )){
$chkMobile = true;
break;
}
}

생각보다 단순합니다.


$_SERVER['HTTP_USER_AGENT'] 는 HTTP 헤더를 뜯어서 접속 에이전트가 무엇인지에 대한 정보를 담고 있습니다.

이것과 $mAgent에 있는 모바일 에이전트를 비교하여 모바일인지 확인하고 $chkMobile의 값을 바꾸는 방식으로 움직입니다.


크롬 쓰시는 분들은 개발자도구에서 (혹은 와이어샤크) 요청해더를 뜯어보면 Agent라는 정보가 있을거예요.


이게 접속 기기를 나타냅니다.


iPhone의 경우 iphone으로 적으면 안됩니다. 대소문자 구별이 확실하더라구요.


if($chkMobile) {
//모바일일 경우
} else {
//PC일 경우
}


제가 이번에 이걸 사용하게 된 계기가 Laravel로 만들어진 기존 사이트가 있는 것을 하이브리드 앱으로도 만들려고 하다보니까


html 파일을 완전히 분리하게 되었고, 그래서 일반 네이티브 앱처럼 API요청을 하면 json이 반환되는 형식으로 해야할 필요가 있었습니다~


만약 메인뉴스피드 목록을 뿌려주는 기존 MVC가 있었다면 여기 컨트롤러에서 모델에서 데이터를 가져오고 뷰에다가 뿌리는데


여기서 뷰에 뿌리는 과정을 빼고 가져온 데이터를 json으로 요청한 모바일에게 전달하는 것이죠


그래서 자바스크립트를 사용하지 않고 PHP로 체크하는 방법을 생각하여 검색하면서 응용하여 소스를 짰습니다.



뭔가 되게 간단한 팁 알려드리는데 얘기가 길어진것 같네요 ㅋㅋㅋ 


열일 열공 하시고! 즐거운 프로그래밍 되세요~~





도움이 되셨다면 아래 공감 버튼을 꾹!