Cel mai simplu mod de a detecta un dispozitiv mobil în PHP (Programare, Php, Mobil)

Abs a intrebat.

Care este cel mai simplu mod de a afla dacă un utilizator folosește un dispozitiv mobil pentru a naviga pe site-ul meu folosind PHP?

Am dat peste multe clase pe care le puteți folosi, dar speram la o condiție simplă if!

Există o modalitate prin care să pot face acest lucru?

Comentarii

15 răspunsuri
Naveed

Iată o sursă:

Cod:

<?php

$useragent=$_SERVER['HTTP_USER_AGENT'];

if(preg_match('/(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i',substr($useragent,0,4)))

header('Location: http://detectmobilebrowser.com/mobile');

?>

Comentarii

  • Ar putea fi falsificat HTTP_USER_AGENT? –  > Por datasn.io.
  • @naveed Doar o avertizare, acest lucru nu mai pare să funcționeze. Testat în IOS 8.1 folosind browserul mobil al Chrome. Totuși, Justin’s funcționează pentru mine. –  > Por James.
  • 21

  • @kavior.com Da, poate fi falsificat, dar ar trebui să le permitem oamenilor să falsifice dacă doresc… pentru că asta ar fi intenția lor, de ce să îi împiedicăm pe oameni să facă ceea ce vor în mod specific (adică să încarce versiunea desktop dintr-un motiv anume)? –  > Por Nick Steele.
  • acest răspuns este acum atât de învechit. există multe falsuri pozitive, safari pe OSX este detectat ca fiind mobil, Chrome pe OSX este detectat ca fiind mobil. –  > Por DevZer0.
  • @DevZer0: Ok. Puteți adăuga cea mai recentă soluție la sfârșitul acestui răspuns. –  > Por Naveed.
Justin DoCanto

Am scris acest script pentru a detecta un browser mobil în PHP.

Codul detectează un utilizator pe baza șirului user-agent prin preg_match()ing cuvinte care se găsesc doar în șirurile user-agent ale dispozitivelor mobile după sute de teste. Are o acuratețe de 100% pe toate dispozitivele mobile actuale și în prezent îl actualizez pentru a suporta mai multe dispozitive mobile pe măsură ce apar. Codul se numește isMobile și este următorul:

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"]);
}

Îl puteți utiliza astfel:

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

Pentru a redirecționa un utilizator către site-ul dvs. mobil, aș face așa:

// 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/");
}

Anunțați-mă dacă aveți întrebări și mult noroc!

Comentarii

  • @RobertHarvey – Sunt confuz. toți întreabă practic același lucru, așa că ce ar trebui să fac, în afară de a răspunde la întrebare? Să le spun să folosească altceva de fiecare dată? Sunt nou aici, așa că nu sunt sigur dacă ar trebui să fac un link către primul răspuns? –  > Por Justin DoCanto.
  • Acest cuvânt cheie „tabletă” îmi creează o problemă la unele anteturi IE8 (PC) care au ca răspuns „Tablet PC 2.0” –  > Por Mladen Janjetovic.
  • De ce să folosești o funcție pentru a stoca condiția în loc de o simplă variabilă și să faci if($isMobile) {}? –  > Por D4V1D.
  • Iată versiunea actualizată: return preg_match("/(android|webos|avantgo|iphone|ipad|ipod|blackberry|iemobile|bolt|boost|cricket|docomo|fone|hiptop|mini|opera mini|kitkat|mobi|palm|phone|pie|tablet|up.browser|up.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]); Aceasta este o colecție de câteva dispozitive noi. –  > Por Ivijan Stefan Stipić.
  • O altă actualizare/mod: /b(?:a(?:ndroid|vantgo)|b(?:lackberry|olt|o?ost)|cricket|docomo|hiptop|i(?:emobile|p[ao]d)|kitkat|m(?:ini|obi)|palm|(?:i|smart|windows )phone|symbian|up.(?:browser|link)|tablet(?: browser| pc)|(?:hp-|rim |sony )tablet|w(?:ebos|indows ce|os))/i –  > Por bobble bubble.
Henrik Sommerland

Am găsit detector mobil este foarte simplu și poți folosi doar funcția isMobile() funcție 🙂

Comentarii

  • Îmi place că această clasă pare să fie actualizată în mod regulat. Cea mai recentă versiune Acum 24 de zile, la data acestui comentariu. –  > Por showdev.
D4V1D

Mă întrebam, până acum, de ce nu a postat cineva o ușoară modificare a răspunsului acceptat la utilizarea lui implode() pentru a avea o mai bună lizibilitate a codului. Așa că iată-l:

<?php
$uaFull = strtolower($_SERVER['HTTP_USER_AGENT']);
$uaStart = substr($uaFull, 0, 4);

$uaPhone = [
    '(android|bbd+|meego).+mobile',
    'avantgo',
    'bada/',
    'blackberry',
    'blazer',
    'compal',
    'elaine',
    'fennec',
    'hiptop',
    'iemobile',
    'ip(hone|od)',
    'iris',
    'kindle',
    'lge ',
    'maemo',
    'midp',
    'mmp',
    'mobile.+firefox',
    'netfront',
    'opera m(ob|in)i',
    'palm( os)?',
    'phone',
    'p(ixi|re)/',
    'plucker',
    'pocket',
    'psp',
    'series(4|6)0',
    'symbian',
    'treo',
    'up.(browser|link)',
    'vodafone',
    'wap',
    'windows ce',
    'xda',
    'xiino'
];

$uaMobile = [
    '1207', 
    '6310', 
    '6590', 
    '3gso', 
    '4thp', 
    '50[1-6]i', 
    '770s', 
    '802s', 
    'a wa', 
    'abac|ac(er|oo|s-)', 
    'ai(ko|rn)', 
    'al(av|ca|co)', 
    'amoi', 
    'an(ex|ny|yw)', 
    'aptu', 
    'ar(ch|go)', 
    'as(te|us)', 
    'attw', 
    'au(di|-m|r |s )', 
    'avan', 
    'be(ck|ll|nq)', 
    'bi(lb|rd)', 
    'bl(ac|az)', 
    'br(e|v)w', 
    'bumb', 
    'bw-(n|u)', 
    'c55/', 
    'capi', 
    'ccwa', 
    'cdm-', 
    'cell', 
    'chtm', 
    'cldc', 
    'cmd-', 
    'co(mp|nd)', 
    'craw', 
    'da(it|ll|ng)', 
    'dbte', 
    'dc-s', 
    'devi', 
    'dica', 
    'dmob', 
    'do(c|p)o', 
    'ds(12|-d)', 
    'el(49|ai)', 
    'em(l2|ul)', 
    'er(ic|k0)', 
    'esl8', 
    'ez([4-7]0|os|wa|ze)', 
    'fetc', 
    'fly(-|_)', 
    'g1 u', 
    'g560', 
    'gene', 
    'gf-5', 
    'g-mo', 
    'go(.w|od)', 
    'gr(ad|un)', 
    'haie', 
    'hcit', 
    'hd-(m|p|t)', 
    'hei-', 
    'hi(pt|ta)', 
    'hp( i|ip)', 
    'hs-c', 
    'ht(c(-| |_|a|g|p|s|t)|tp)', 
    'hu(aw|tc)', 
    'i-(20|go|ma)', 
    'i230', 
    'iac( |-|/)', 
    'ibro', 
    'idea', 
    'ig01', 
    'ikom', 
    'im1k', 
    'inno', 
    'ipaq', 
    'iris', 
    'ja(t|v)a', 
    'jbro', 
    'jemu', 
    'jigs', 
    'kddi', 
    'keji', 
    'kgt( |/)', 
    'klon', 
    'kpt ', 
    'kwc-', 
    'kyo(c|k)', 
    'le(no|xi)', 
    'lg( g|/(k|l|u)|50|54|-[a-w])', 
    'libw', 
    'lynx', 
    'm1-w', 
    'm3ga', 
    'm50/', 
    'ma(te|ui|xo)', 
    'mc(01|21|ca)', 
    'm-cr', 
    'me(rc|ri)', 
    'mi(o8|oa|ts)', 
    'mmef', 
    'mo(01|02|bi|de|do|t(-| |o|v)|zz)', 
    'mt(50|p1|v )', 
    'mwbp', 
    'mywa', 
    'n10[0-2]', 
    'n20[2-3]', 
    'n30(0|2)', 
    'n50(0|2|5)', 
    'n7(0(0|1)|10)', 
    'ne((c|m)-|on|tf|wf|wg|wt)', 
    'nok(6|i)', 
    'nzph', 
    'o2im', 
    'op(ti|wv)', 
    'oran', 
    'owg1', 
    'p800', 
    'pan(a|d|t)', 
    'pdxg', 
    'pg(13|-([1-8]|c))', 
    'phil', 
    'pire', 
    'pl(ay|uc)', 
    'pn-2', 
    'po(ck|rt|se)', 
    'prox', 
    'psio', 
    'pt-g', 
    'qa-a', 
    'qc(07|12|21|32|60|-[2-7]|i-)', 
    'qtek', 
    'r380', 
    'r600', 
    'raks', 
    'rim9', 
    'ro(ve|zo)', 
    's55/', 
    'sa(ge|ma|mm|ms|ny|va)', 
    'sc(01|h-|oo|p-)', 
    'sdk/', 
    'se(c(-|0|1)|47|mc|nd|ri)', 
    'sgh-', 
    'shar', 
    'sie(-|m)', 
    'sk-0', 
    'sl(45|id)', 
    'sm(al|ar|b3|it|t5)', 
    'so(ft|ny)', 
    'sp(01|h-|v-|v )', 
    'sy(01|mb)', 
    't2(18|50)', 
    't6(00|10|18)', 
    'ta(gt|lk)', 
    'tcl-', 
    'tdg-', 
    'tel(i|m)', 
    'tim-', 
    't-mo', 
    'to(pl|sh)', 
    'ts(70|m-|m3|m5)', 
    'tx-9', 
    'up(.b|g1|si)', 
    'utst', 
    'v400', 
    'v750', 
    'veri', 
    'vi(rg|te)', 
    'vk(40|5[0-3]|-v)', 
    'vm40', 
    'voda', 
    'vulc', 
    'vx(52|53|60|61|70|80|81|83|85|98)', 
    'w3c(-| )', 
    'webc', 
    'whit', 
    'wi(g |nc|nw)', 
    'wmlb', 
    'wonu', 
    'x700', 
    'yas-', 
    'your', 
    'zeto', 
    'zte-'
];

$isPhone = preg_match('/' . implode($uaPhone, '|') . '/i', $uaFull);
$isMobile = preg_match('/' . implode($uaMobile, '|') . '/i', $uaStart);

if($isPhone || $isMobile) {
    // do something with that device
} else {
    // process normally
}

user3126867
function isMobileDev(){
    if(isset($_SERVER['HTTP_USER_AGENT']) and !empty($_SERVER['HTTP_USER_AGENT'])){
       $user_ag = $_SERVER['HTTP_USER_AGENT'];
       if(preg_match('/(Mobile|Android|Tablet|GoBrowser|[0-9]x[0-9]*|uZardWeb/|Mini|Doris/|Skyfire/|iPhone|Fennec/|Maemo|Iris/|CLDC-|Mobi/)/uis',$user_ag)){
          return true;
       };
    };
    return false;
}

Oliver Charlesworth

Nu există o modalitate fiabilă. Poate că vă puteți uita la șirul user-agent, , dar acesta poate fi falsificat sau omis. Alternativ, ați putea utiliza un serviciu GeoIP pentru a căuta adresa IP a clientului, dar, din nou, acest lucru poate fi ușor de eludat.

Comentarii

  • GeoIP nu ar fi de mare ajutor. Chiar dacă ați putea determina că IP-ul lor aparține unei rețele mobile, aceștia ar putea lega conexiunea la un computer de birou. Dacă nu este vorba de o rețea mobilă, nu aveți cu adevărat nimic, toate dispozitivele se pot conecta prin Wi-Fi. De asemenea, aveți și problema menținerii unei baze de date globale cu intervale IP. Utilizarea agentului de utilizator, chiar dacă nu este perfectă, presupun că este mult mai fiabilă. Nu e ca și cum ar fi o problemă de securitate să servești conținutul unui browser greșit, deci cui îi pasă? Dacă cineva falsifică UA, probabil că știe deja în ce se bagă. –  > Por Mike.
  • Aveai dreptate acum 11 ani, agenții de utilizator devin inutili, de exemplu, nu mai raportează Safari și Firefox iPad ca fiind mobile. Chrome încă o face, dar va urma exemplul în curând, cred. –  > Por Boris Gafurov.
Kalyan Halder Raaz

Pur și simplu puteți urma linkul. este foarte simplu și foarte ușor de utilizat. Eu folosesc acest lucru. Funcționează bine.

http://mobiledetect.net/

utilizați așa

//include the file
require_once 'Mobile_Detect.php';
$detect = new Mobile_Detect;

// Any mobile device (phones or tablets).
if ( $detect->isMobile() ) {
 //do some code
}

// Any tablet device.
if( $detect->isTablet() ){
 //do some code
}

JoyGuru

Trebuie doar să includeți user_agent.php care poate fi găsit din Detectarea dispozitivelor mobile în PHP și să utilizați următorul cod.

<?php
//include file
include_once 'user_agent.php';

//create an instance of UserAgent class
$ua = new UserAgent();

//if site is accessed from mobile, then redirect to the mobile site.
if($ua->is_mobile()){
   header("Location:http://m.codexworld.com");
   exit;
}
?>

WebSon
<?php 

//-- Very simple way
$useragent = $_SERVER['HTTP_USER_AGENT']; 
$iPod = stripos($useragent, "iPod"); 
$iPad = stripos($useragent, "iPad"); 
$iPhone = stripos($useragent, "iPhone");
$Android = stripos($useragent, "Android"); 
$iOS = stripos($useragent, "iOS");
//-- You can add billion devices 

$DEVICE = ($iPod||$iPad||$iPhone||$Android||$iOS);

if (!$DEVICE) { ?>

<!-- What you want for all non-mobile devices. Anything with all HTML, PHP, CSS, even full page codes-->

<?php }else{ ?> 

<!-- What you want for all mobile devices. Anything with all HTML, PHP, CSS, even full page codes --> 

<?php } ?>

Mike

Detectarea dispozitivelor în PHP de pe 51Degrees.com face exact ceea ce vă doriți – detectează dispozitivele mobile și diverse proprietăți asociate cu dispozitivele detectate. Este simplu de utilizat și nu necesită întreținere. Configurarea se face în 4 pași simpli:

  1. Descărcați fișierul Zip de pe http://sourceforge.net/projects/fiftyone/.
  2. Decomprimați fișierul într-un director din serverul dumneavoastră PHP.
  3. Apoi adăugați următorul cod în pagina dvs. PHP:
  4. require_once 'path/to/core/51Degrees.php';
    require_once 'path/to/core/51Degrees_usage.php';
    
  5. Toate informațiile disponibile despre dispozitiv vor fi conținute în matricea $_51d:
  6. if ($_51d['IsMobile'])
    {
        //Start coding for a mobile device here.
    }
    

Detectorul de dispozitive 51Degrees nu utilizează expresii regulate pentru detecții. Doar părțile importante din anteturile HTTP sunt folosite pentru a potrivi dispozitivele. Ceea ce face ca această soluție să fie cea mai rapidă (5 000 000 de detecții pe secundă pe un hardware mediocru) și cea mai precisă (99,97% acuratețe), deoarece sute de dispozitive noi sunt adăugate săptămânal în baza de date (tipurile de dispozitive acceptate includ console, televizoare inteligente, cititoare electronice, tablete și multe altele).

Software-ul este open source distribuit sub Mozilla Public License 2 și este compatibil cu proiectele comerciale și open source. Ca bonus, soluția 51Degrees conține și o aplicație complementară optimizator de imagini PHP care poate redimensiona automat imaginile pentru dispozitivele mobile.

În mod implicit, detectorul de dispozitive 51Degrees PHP folosește fișierul de date Lite, care este gratuit și conține peste 30000 de dispozitive și 50 de proprietăți pentru fiecare dispozitiv. Fișierul Lite este actualizat o dată la 3 luni. Dacă doriți să aveți un nivel mai ridicat de detalii despre dispozitivele mobile solicitante, atunci sunt disponibile fișierele de date Premium și Enterprise. Premium conține mult peste 70000 de dispozitive și 100 de proprietăți pentru fiecare dispozitiv, cu actualizări săptămânale. Enterprise este actualizat zilnic și conține peste 150000 de dispozitive cu 150 de proprietăți pentru fiecare.

Lista completă a proprietăților dispozitivelor.
Comparați fișierele de date.

Comentarii

  • acest software este enervant. nu suportă IIS, nu există bibliotecă doar pentru php. –  > Por Tschallacka.
Ronnie Beltran

Ai putea, de asemenea, să folosești o api terță parte pentru a face detectarea dispozitivului prin intermediul șirului de agenți de utilizator. Un astfel de serviciu este www.useragentinfo.co. Trebuie doar să vă înregistrați și să obțineți token-ul api, iar mai jos este modul în care obțineți informațiile despre dispozitiv prin PHP:

<?php
$useragent = $_SERVER['HTTP_USER_AGENT'];
// get api token at https://www.useragentinfo.co/
$token = "<api-token>";
$url = "https://www.useragentinfo.co/api/v1/device/";

$data = array('useragent' => $useragent);

$headers = array();
$headers[] = "Content-type: application/json";
$headers[] = "Authorization: Token " . $token;

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));

$json_response = curl_exec($curl);

$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ($status != 200 ) {
    die("Error: call to URL $url failed with status $status, response $json_response, curl_error " . curl_error($curl) . ", curl_errno " . curl_errno($curl));
}

curl_close($curl);

echo $json_response;
?>

Și iată un exemplu de răspuns în cazul în care vizitatorul folosește un iPhone:

{
  "device_type":"SmartPhone",
  "browser_version":"5.1",
  "os":"iOS",
  "os_version":"5.1",
  "device_brand":"Apple",
  "bot":false,
  "browser":"Mobile Safari",
  "device_model":"iPhone"
}

Comentarii

  • Acest lucru funcționează! Și acest script simplu pare a fi unul dintre cele mai bune pe care le-am găsit : (până acum) este singurul script pe care l-am găsit care poate detecta tableta mea ASUS ZenPad ! Dar ATENȚIE : au schimbat $url în https://useragentinfo.co/device, , vezi pagina lor https://useragentinfo.co : dă codul bash pentru a executa curl dar într-adevăr, puteți înlocui acest lucru cu liniile dvs. de PHP. Cu toate acestea, ar trebui să omiteți linia „Authorization: Token ..”, deoarece pare să nu mai fie necesară (și nu văd nicio modalitate de a obține acea cheie API). –  > Por Roelof Berkepeis.
  • Nu primesc răspuns. afișează doar {} Cred că este nevoie de un token API, vă rog să mă ghidați cum să generez token-ul. –  > Por Mohd Bashir.
  • $data = array(‘user_agent’ => $useragent); Ar trebui să fie ca : $data = array(‘user_agent’ => $useragent); –  > Por Mohd Bashir.
  • Ce se întâmplă dacă domeniul nu este accesibil? –  > Por ENSATE.
AbdulRahman AlShamiri
function isMobile(){
   if(defined(isMobile))return isMobile;
   @define(isMobile,(!([email protected](@$_SERVER['HTTP_USER_AGENT']))?0:
   (
      preg_match('/(android|bbd+|meego).+mobile|silk|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i'
      ,$HUA)
   ||
      preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i'
      ,$HUA)
   )
   ));
}

echo isMobile()?1:0;
// OR
echo isMobile?1:0;

Anthony Artemiev

În cazul în care vă pasă de dimensiunea ecranului, puteți stoca lățimea și înălțimea ecranului ca valori cookie, dacă nu există încă, și apoi puteți face o redirecționare automată a paginii.

Acum aveți cookie-uri pe partea de client și server și le puteți utiliza pentru a determina telefoanele mobile, tabletele și alte dispozitive.

Iată un exemplu rapid despre cum puteți face acest lucru cu JavaScript. Atenție! [acest cod conține pseudocod].

if (!getcookie("screen_size")) {
    var screen_width = screen.width;
    var screen_height = screen.height;
    setcookie("screen_size", screen_width+", " +screen_height);
    go2(geturl());
}

Manjeet Kumar Nai
<?php
$useragent=$_SERVER['HTTP_USER_AGENT'];
if(preg_match('/(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i',substr($useragent,0,4)))
{
    echo('This is mobile device');
}
else
{
   echo('This is Desktop/Laptop device');
}
?>

Luis H Cabrejo

Poate că combinând niște javascript și PHP s-ar putea realiza trucul

<?php
$string = '<script>';
$string .= 'if ( /Opera|OPR/|Puffin|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { ';
$string .= '        alert("CELL")';
$string .= '    } else {';
$string .= '        alert("NON CELL")';
$string .= '    }       ';  
$string .= '</script>'; 
echo $string;
?>

Am folosit asta cu javascript simplu, de asemenea, în schimb

Tags:,