Einfachste Möglichkeit, ein mobiles Gerät in PHP zu erkennen

Lesezeit: 11 Minuten

Einfachste Moglichkeit ein mobiles Gerat in PHP zu erkennen
Abs

Wie kann ich am einfachsten feststellen, ob ein Benutzer ein mobiles Gerät verwendet, um meine Website mit PHP zu durchsuchen?

Ich bin auf viele Klassen gestoßen, die Sie verwenden können, aber ich hatte auf eine einfache if-Bedingung gehofft!

Gibt es eine Möglichkeit, dies zu tun?

  • Sie könnten ein Javascript in die Seite einfügen, das die Bildschirmauflösung überprüft, aber das wäre clientseitig: howtocreate.co.uk/tutorials/javascript/browserwindow

    – diejh

    7. November 2010 um 11:55 Uhr


  • Hier ist deine Lösung: code.google.com/p/php-mobile-detect2

    – Sergej Brazdeikis

    19. April 2011 um 17:09 Uhr

  • Die Überprüfung der Bildschirmgröße ist heutzutage aufgrund von Retina-Geräten schwierig.

    – Martin Jakob

    13. Februar 2020 um 13:15 Uhr


1646919246 104 Einfachste Moglichkeit ein mobiles Gerat in PHP zu erkennen
Naveed

Hier ist eine Quelle:

Code:

<?php

$useragent=$_SERVER['HTTP_USER_AGENT'];

if(preg_match('/(android|bb\d+|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');

?>

  • Könnte HTTP_USER_AGENT gefälscht sein?

    – datasn.io

    25. Mai 2015 um 12:54 Uhr

  • @naveed Nur ein Hinweis, das scheint nicht mehr zu funktionieren. Getestet in IOS 8.1 mit dem mobilen Browser von Chrome. Justin’s funktioniert jedoch für mich.

    – James

    27. August 2015 um 17:04 Uhr

  • @kavior.com Ja, es kann gefälscht werden, aber wir sollten es den Leuten erlauben, zu fälschen, wenn sie es wünschen … denn das wäre ihre Absicht, warum sollten sie die Leute davon abhalten, das zu tun, was sie ausdrücklich wollen (dh aus irgendeinem bestimmten Grund die Desktop-Version laden). )?

    – Nick Steele

    6. Oktober 2015 um 23:55 Uhr

  • Diese Antwort ist jetzt so veraltet. Es gibt viele Fehlalarme, Safari unter OSX wird als Mobilgerät erkannt, Chrome unter OSX wird als Mobilgerät erkannt.

    – DevZer0

    25. Mai 2016 um 14:21 Uhr

  • @ DevZer0: Okay. Sie können die neueste Lösung am Ende dieser Antwort hinzufügen.

    – Naveed

    31. Mai 2016 um 6:53 Uhr

Einfachste Moglichkeit ein mobiles Gerat in PHP zu erkennen
Justin DoCanto

Ich schrieb dieses Skript, um einen mobilen Browser zu erkennen in PHP.

Der Code erkennt einen Benutzer anhand des User-Agent-Strings, indem er Wörter preg_match()t, die nach Hunderten von Tests nur in User-Agent-Strings von Mobilgeräten gefunden werden. Es hat eine 100%ige Genauigkeit auf allen aktuellen Mobilgeräten und ich aktualisiere es derzeit, um mehr Mobilgeräte zu unterstützen, sobald sie herauskommen. Der Code heißt isMobile und lautet wie folgt:

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

Sie können es wie folgt verwenden:

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

Um einen Benutzer auf Ihre mobile Website umzuleiten, würde ich Folgendes tun:

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

Lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben und viel Glück!

  • @RobertHarvey – ich bin verwirrt. Sie fragen im Grunde alle dasselbe, also was soll ich tun, außer die Frage zu beantworten? Sagen Sie ihnen, sie sollen jedes Mal etwas anderes verwenden? Ich bin neu hier, also bin ich mir nicht sicher, ob ich auf die erste Antwort verlinken soll?

    – Justin DoCanto

    13. Juni 2012 um 3:42 Uhr


  • Dieses Schlüsselwort “Tablet” verursacht mir ein Problem bei einigen IE8 (PC)-Headern, die “Tablet PC 2.0” als Antwort haben

    – Mladen Janjetović

    29. Oktober 2013 um 15:55 Uhr

  • Warum eine Funktion verwenden, um die Bedingung anstelle einer einfachen Variablen zu speichern und zu tun if($isMobile) {}?

    – D4V1D

    14. Januar 2016 um 22:10 Uhr


  • Hier ist die aktualisierte Version: 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"]); Dies ist eine Sammlung von wenigen neuen Geräten.

    – Ivijan Stefan Stipic

    28. Januar 2016 um 20:23 Uhr

ich fand Handy erkennen um wirklich einfach zu sein und Sie können einfach die verwenden isMobile() funktion 🙂

  • @showdev erkennt den Desktop-Chrome-Modus “Inspect” nicht (stattdessen denkt es, es sei ein Handy)

    – Marmor

    27. Juni 2021 um 9:31 Uhr

  • @showdev hast du dieses Problem inzwischen irgendwie gelöst?

    – Benutzer3495363

    8. November 2021 um 8:57 Uhr

1646919247 503 Einfachste Moglichkeit ein mobiles Gerat in PHP zu erkennen
Benutzer3126867

function isMobileDev(){
    if(!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;
}

Folgen Sie einfach dem Link. es ist sehr einfach und sehr einfach zu bedienen. Ich benutze das. Es funktioniert gut.

http://mobiledetect.net/

so verwenden

//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
}

  • funktioniert nicht, da es den Desktop-Chrome-Untersuchungsmodus als mobil erkennt

    – Benutzer3495363

    27. Juni 2021 um 9:39 Uhr

Ich habe mich bis jetzt gefragt, warum nicht jemand eine geringfügige Änderung der akzeptierten Antwort auf die Verwendung von gepostet hat implode() um den Code besser lesbar zu machen. Hier geht es also:

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

$uaPhone = [
    '(android|bb\d+|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("https://stackoverflow.com/" . implode($uaPhone, '|') . '/i', $uaFull);
$isMobile = preg_match("https://stackoverflow.com/" . implode($uaMobile, '|') . '/i', $uaStart);

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

  • funktioniert nicht, da es den Desktop-Chrome-Untersuchungsmodus als mobil erkennt

    – Benutzer3495363

    27. Juni 2021 um 9:39 Uhr

1646919248 289 Einfachste Moglichkeit ein mobiles Gerat in PHP zu erkennen
Oliver Charlesworth

Es gibt keinen zuverlässigen Weg. Kannst du dir vielleicht mal anschauen User-Agent-String, aber dies kann gespooft oder weggelassen werden. Alternativ könnten Sie einen GeoIP-Dienst verwenden, um die IP-Adresse des Clients nachzuschlagen, aber auch dies kann leicht umgangen werden.

  • GeoIP würde nicht wirklich helfen. Selbst wenn Sie feststellen könnten, dass ihre IP zu einem Mobilfunknetz gehört, könnten sie die Verbindung zu einem Desktop-Computer anbinden. Wenn es sich nicht um ein mobiles Netzwerk handelt, können sich alle Geräte über Wi-Fi verbinden. Außerdem haben Sie das Problem, eine globale Datenbank mit IP-Bereichen zu verwalten. Die Verwendung des Benutzeragenten ist, obwohl er nicht perfekt ist, viel zuverlässiger. Es ist nicht wirklich ein Sicherheitsproblem, den falschen Browserinhalt bereitzustellen, also wen interessiert das? Wenn jemand das UA fälscht, weiß er wahrscheinlich bereits, worauf er sich einlässt.

    – Mike

    1. November 2015 um 2:37 Uhr

  • Sie hatten vor 11 Jahren Recht, Benutzeragenten werden nutzlos, z. B. melden sie Safari und Firefox iPad nicht mehr als mobil. Chrome tut es immer noch, aber es wird dem Anzug bald folgen, denke ich.

    – Boris Gafurov

    19. Februar 2021 um 16:43 Uhr

988100cookie-checkEinfachste Möglichkeit, ein mobiles Gerät in PHP zu erkennen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy