2011-06-29 13 views
34

Powiel możliwe:
Simplest way to detect a mobile deviceDetect mobilna przeglądarka

Mam witryny i chcę, aby wykryć, która przeglądarka jest używana i przekierować je. Mam indeks php i kod musi znajdować się w php. Znalazłem wiele witryn, ale one nie działają lub nie wykrywają wielu przeglądarek mobilnych. Czy znasz jakiś dobry kod lub samouczki, które mogą wykryć wiele przeglądarek mobilnych?

+0

Nie jestem pewien, czy to jest za dużo dla tego, czego potrzebujesz, ale możesz chcieć rzucić okiem: http://wurfl.sourceforge.net/nphp/ – dimi

+0

zobacz: http://mobiledetect.net/ wygląda na najprostszy sposób ... – theINtoy

+0

Ciasto w przeciwieństwie do tego jest łatwiejsze do włączenia i faktycznie działa !! Sugerowałbym, aby głosować na @iamandrus jako odpowiedź – user613326

Odpowiedz

55

Czy mój kod agenta użytkownika:

<?php 

/* USER-AGENTS 
================================================== */ 
function check_user_agent ($type = NULL) { 
     $user_agent = strtolower ($_SERVER['HTTP_USER_AGENT']); 
     if ($type == 'bot') { 
       // matches popular bots 
       if (preg_match ("/googlebot|adsbot|yahooseeker|yahoobot|msnbot|watchmouse|pingdom\.com|feedfetcher-google/", $user_agent)) { 
         return true; 
         // watchmouse|pingdom\.com are "uptime services" 
       } 
     } else if ($type == 'browser') { 
       // matches core browser types 
       if (preg_match ("/mozilla\/|opera\//", $user_agent)) { 
         return true; 
       } 
     } else if ($type == 'mobile') { 
       // matches popular mobile devices that have small screens and/or touch inputs 
       // mobile devices have regional trends; some of these will have varying popularity in Europe, Asia, and America 
       // detailed demographics are unknown, and South America, the Pacific Islands, and Africa trends might not be represented, here 
       if (preg_match ("/phone|iphone|itouch|ipod|symbian|android|htc_|htc-|palmos|blackberry|opera mini|iemobile|windows ce|nokia|fennec|hiptop|kindle|mot |mot-|webos\/|samsung|sonyericsson|^sie-|nintendo/", $user_agent)) { 
         // these are the most common 
         return true; 
       } else if (preg_match ("/mobile|pda;|avantgo|eudoraweb|minimo|netfront|brew|teleca|lg;|lge |wap;| wap /", $user_agent)) { 
         // these are less common, and might not be worth checking 
         return true; 
       } 
     } 
     return false; 
} 

?> 

Jak używać:

<?php 
$ismobile = check_user_agent('mobile'); 
if($ismobile) { 
return 'yes'; 
} else { 
return 'no'; 
} 
?> 
+0

Hej, dziękuję bardzo. To naprawdę mi pomaga. – Gromdroid

+0

Nie ma problemu! – iamandrus

+0

fajna realizacja. Sława! – vlex

4

W pracy używamy WURFL - istnieją miliony różnych przeglądarek tam, a ty lepiej ponowne wykorzystanie pracy wykonanej przez innych z doświadczeniem w tym zakresie, niż wdrożenie własnego rozwiązania.

+1

Może być pomocne, aby pokazać lub połączyć się z przykładem użycia WURFL w PHP, aby osiągnąć to, czego chce @Gromdroid. – cdmckay

28

Napisałem this script to detect a mobile browser w PHP.

Kod wykrywa użytkownika na podstawie ciągu agenta użytkownika przez preg_match() ing. Ma 100% dokładność na wszystkich obecnych urządzeniach mobilnych i obecnie aktualizuję go, aby obsługiwał więcej urządzeń mobilnych, gdy tylko się pojawią. Kod nazywa isMobile i przedstawia się następująco:

function isMobile() { 
    return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); 
} 

Można go używać tak:

// Use the function 
if(isMobile()) 
    // Do something for only mobile users 
else 
    // Do something for only desktop users 

Aby przekierować użytkownika do witryny mobilnej, chciałbym to zrobić:

// Create the function, so you can use it 
function isMobile() { 
    return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); 
} 
// If the user is on a mobile device, redirect them 
if(isMobile()) 
    header("Location: http://m.yoursite.com/"); 

Daj mi znać, jeśli masz jakieś pytania i powodzenia!

+0

@AndrewBarber: Wydaje się, że spełnia wszystkie wymagania nakreślone [tutaj] (http://meta.stackexchange.com/questions/94022) –

+0

@robert ok. Moją rzeczą było to, że odpowiedzi są prawie duplikatami, ale rozumiem :) –

+0

Nie rozumiem, o co chodzi. wiele pytań z pytaniem, jak przekierować w PHP, więc odpowiedziałem. Czy sugerowali byście zamiast tego zrobić? –

Powiązane problemy