모바일 감지
PHP에서 모바일 또는 데스크탑을 감지하는 방법에 대한 튜토리얼에 오신 것을 환영합니다. 따라서 사용자를 모바일 웹 사이트로 리디렉션하거나 데스크탑에서 "모바일 전용"기능을 숨기고 싶습니까? 글쎄, 우리는 사용자가 모바일 장치 또는 데스크톱을 먼저 가지고 있는지 감지해야 합니다.
PHP에서 모바일 장치를 감지하는 가장 쉬운 방법은 HTTP 사용자 에이전트에 "mobile"이라는 단어가 포함되어 있는지 확인하는 것입니다. – is_numeric (strpos (strtolower ($ _ SERVER [ 'HTTP_USER_AGENT']), "mobile"));
그러나 우리는 어떻게 그렇게 합니까? 스마트 폰인지 태블릿인지 어떻게 더 확인합니까? 이것이 바로 이 안내서에서 예제를 통해 살펴볼 내용입니다. 계속 읽으십시오!
ⓘ이 튜토리얼의 시작 부분에 모든 예제 코드가 포함 된 zip 파일이 포함되어 있으므로 모든 것을 복사하여 붙여 넣을 필요가 없습니다.
다운로드
먼저 약속 된 예제 코드에 대한 다운로드 링크가 있습니다.
소스 코드 다운로드
모든 예제 소스 코드를 다운로드하려면 여기를 클릭하십시오. MIT 라이센스에 따라 릴리스 했으므로 코드 위에 빌드하거나 자신의 프로젝트에서 자유롭게 사용할 수 있습니다.
빠른 시작
사용자 에이전트
이 첫 번째 방법은 HTTP 사용자 에이전트에서 정보를 읽는 것입니다. 이는 다른 모든 방법의 근간입니다.
사용자 에이전트 란 무엇입니까?
모질라 개발자로부터 간단히 인용하겠습니다 :
User-Agent 요청 헤더에는 네트워크 프로토콜 피어가 요청하는 소프트웨어 사용자 에이전트의 응용 프로그램 유형, 운영 체제, 소프트웨어 공급 업체 또는 소프트웨어 버전을 식별 할 수 있는 특성 문자열이 포함되어 있습니다.
좀 더 평범한 용어로, HTTP 사용자 에이전트는 웹 페이지를 요청할 때 웹 브라우저가 웹 서버에 보내는 "보이지 않는 정보"입니다. 웹 개발자는 이 정보를 사용하여 사용자가 어떤 기술을 사용할 수 있는지 결정할 수 있습니다 그에 따라 웹 페이지를 보유하고 제공합니다.
사용자 에이전트에는 어떤 정보가 있습니까?
오래된 모질라를 다시 인용하면 일반적인 사용자 에이전트의 형식은 다음과 같습니다.
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extensions>
내 자신의 컴퓨터에서 보다 현실적인 예 :
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36
관심이 있으시면 whatismybrowser.com에서 자신의 사용자 에이전트를 확인할 수도 있으며 다음은 모바일 에이전트의 더 관련성 높은 예입니다.
일부 사용자는 날카로운 코드 사용자가 이미 사용자가 모바일 또는 데스크톱 장치에 있는지 확인할 수 있는 방법을 이미 알고 있어야 합니다. 하드웨어 유형의 모바일 장치는 거의 항상 모바일, 모바일 – 전화 또는 모바일 – 태블릿으로 보고합니다.
사용자 에이전트로 탐지
사용자 에이전트는 $_SERVER['HTTP_USER_AGENT'] 전역 변수 – PHP 서버 변수에서 액세스 할 수 있으며 이를 사용하여 플랫폼을 감지 할 수 있습니다.
function isMobile () { return is_numeric(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), "mobile")); } echo isMobile() ? "You are using a mobile device." : "You are on a desktop or laptop." ; /* If you are redirecting the user to a mobile page, it is as simple as if (isMobile()) { header("Location: http://mobile.yoursite.com/"); } */
간단합니다 – 사용자 에이전트 문자열에 "mobile"이라는 단어가 포함되어 있으면 사용자가 휴대 기기를 사용하는 것으로 간주됩니다.
모바일, 태블릿 또는 데스크톱
이제 HTTP 사용자 에이전트의 기본 사항을 알았으므로 이 두 번째 방법은 일종의 "대체"및 개선입니다. 따라서 모바일, 태블릿 및 데스크탑을 더 차별화하려면 어떻게 해야 합니까?
MORE CHECKS
function checkDevice() { // checkDevice() : checks if user device is phone, tablet, or desktop // RETURNS 0 for desktop, 1 for mobile, 2 for tablets if (is_numeric(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), "mobile"))) { return is_numeric(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), "tablet")) ? 2 : 1 ; } else { return 0; } } $deviceType = checkDevice(); if ($deviceType==0) { echo "DESKTOP"; } else if ($deviceType==1) { echo "PHONE OR MOBILE"; } else { echo "TABLET"; }
이전 기능에 다른 검사 계층을 추가하면 태블릿이 더 필터링됩니다.
모바일 감지 라이브러리
마지막으로 매우 자세한 검사를 원하는 사용자에게는 Mobile Detect라는 라이브러리를 사용하는 것이 좋습니다.
모바일 감지 라이브러리 얻기
웹 사이트에서 Mobile Detect 라이브러리를 다운로드하거나 composer에 mobiledetect / mobiledetectlib가있는 Composer를 사용하여 프로젝트 폴더로 직접 가져올 수 있습니다.
D:\http\test>composer require mobiledetect/mobiledetectlib Using version ^2.8 for mobiledetect/mobiledetectlib has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals Installing mobiledetect/mobiledetectlib (2.8.33): Downloading (100%) Writing lock file Generating autoload files
모바일 탐지 스크립트
모바일 감지 스크립트를 다운로드하면 남은 것은 모두 사용하는 것입니다.
// INCLUDE MOBILE DETECT LIBRARY require "mobile-detect/Mobile_Detect.php"; $detect = new Mobile_Detect; // DETECTION ENGINE if ($detect->isMobile() || $detect->isTablet()) { echo "MOBILE OR TABLET DEVICE"; if( $detect->isiOS() ){ echo "IOS"; } if( $detect->isAndroidOS() ){ echo "ANDROID"; } } else { echo "DESKTOP"; } // There are plenty more, and you check it out here - // http://demo.mobiledetect.net/
제한 및 유용한 비트
이것으로 이 튜토리얼의 코드를 완성했습니다. 여기에 도움이 될만한 몇 가지 추가 정보가 있습니다.
최고는 무엇입니까?
개인적으로, 저는 첫 번째 경량 솔루션을 선호합니다 – 깨끗하고 간단하며 빠르며 대부분의 경우를 커버하기에 충분합니다. 그러나 사용자를 깊이 파고 들어 사용자를 브랜드 나 브라우저로 분리해야 하는 경우… 프로젝트 디자인에 어떻게 접근하고 있는지 다시 생각해 보는 것이 좋습니다.
한계
우리는 사용자 에이전트로부터 많은 정보를 얻을 수 있습니다. 또한 시간이 지남에 따라 변경이 발생하므로 감지가 100 % 정확하지는 않습니다. 문자 그대로 태블릿과 휴대폰 사이에 있는 접는 스마트 폰과 랩탑 역할을 하는 태블릿을 가지고 있습니다. 당신이 결정합니다.
추신 고급 사용자는 사용자 에이전트를 비활성화 하도록 선택할 수도 있으며 이 탐지 기능은 실패합니다.
대안 – 반응형 디자인
때로는 반응 형 디자인을 채택하고 HTML / CSS를 변경하기 만하면 됩니다. 그러나 디자인이 유일한 관심사라면 또 다른 전용 모바일 사이트를 개발하는 데 시간과 돈이 가치가 있습니까? 당신이 결정합니다.
등록된 댓글이 없습니다.