HOWTO · PHP

So erkennen Sie mobile Geräte in PHP

Erfahren Sie, wie Sie mobile Anfragen in PHP mit Mobile Detect oder einem User-Agent-Muster klassifizieren.

Auf dieser Seite

In PHP lässt sich eine Anfrage mit der Composer-installierten Bibliothek mobiledetect oder durch Abgleich von HTTP_USER_AGENT aus $_SERVER mit preg_match() als mobil einstufen. Beide Methoden leiten eine Gerätekategorie aus Request-Headern ab; keine kann beweisen, welches physische Gerät die Anfrage gesendet hat.

Mobile Geräte in PHP mit der Klasse mobiledetect erkennen

Installiere die Bibliothek mobiledetect mit Composer in deinem Projekt: composer require mobiledetect/mobiledetectlib. Lade anschließend Composers vendor/autoload.php und erstelle eine Instanz von Mobile_Detect. Die Bibliothek nutzt Request-Informationen wie User-Agent-Zeichenfolgen und weitere Header, um Clients einzustufen.

Für eine einfache Mobilgeräteprüfung rufst du $detect->isMobile() auf. Die Methode gibt einen booleschen Wert zurück, den du in einer if-else-Verzweigung verwenden kannst, um das Ergebnis für mobile oder nicht mobile Geräte auszuwählen. Wenn deine Anwendung Tablets gesondert behandeln soll, kannst du außerdem isTablet() verwenden. Lege fest, wie sich ein Tablet-Ergebnis auf dein Layout oder deine Funktion auswirken soll, bevor du die allgemeinere Mobilgeräte-Einstufung nutzt.

Diese Einstufung bezieht sich auf die Anfrage, die PHP empfangen hat. Im responsiven Designmodus eines Browsers kann sich der User-Agent ändern, wenn du ein anderes Gerät emulierst. Das bestätigt jedoch nicht das Verhalten auf jedem physischen Smartphone oder Tablet. User-Agent-Werte lassen sich ändern; die Geräteerkennung eignet sich daher weder als Sicherheitsprüfung noch zur Identitätsfeststellung.

Mobile Geräte in PHP mit HTTP_USER_AGENT und der Funktion preg_match() erkennen

Für eine Prüfung ohne zusätzliche Abhängigkeit liest du HTTP_USER_AGENT aus der Superglobalen $_SERVER und vergleichst den Wert mit einer kurzen Liste mobiler Begriffe. Der Schlüssel kann fehlen; übergib deshalb vor dem Aufruf von preg_match() einen Zeichenketten-Fallback. Das Beispiel verwendet einen beispielhaften iPhone-User-Agent. Bei einer echten Webanfrage stellt PHP den Wert aus dem Request-Header bereit; überschreibe diesen Request-Wert nicht. Für Tests außerhalb einer Webanfrage kannst du einen Testwert separat in deiner Testumgebung bereitstellen.

<?php
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X)';
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
$pattern = '/(android|iphone|ipod|ipad|mobile|tablet)/i';
$isMobile = preg_match($pattern, $userAgent) === 1;

echo $isMobile ? 'Mobile device detected' : 'Mobile device not detected';

preg_match() gibt bei einem Treffer 1, bei keinem Treffer 0 und bei einem nicht auswertbaren Muster false zurück. Der Vergleich mit === 1 sorgt dafür, dass der Zweig nur bei einem positiven Treffer ausgeführt wird. Fehlt der Header in einer echten Anfrage, ist der Fallback eine leere Zeichenkette und dieses Muster führt zum Zweig für nicht mobile Geräte.

Betrachte das Ergebnis als grobe Einstufung. User-Agent-Zeichenfolgen können fehlen, verändert oder ausgetauscht werden. Ein kurzes, manuell gepflegtes Muster erkennt möglicherweise neuere oder seltene Clients nicht. Auch eine längere Liste garantiert keine vollständige Abdeckung. Die Stack-Overflow-Diskussion über mobile User-Agent-Zeichenfolgen ist eine von der Community gepflegte Referenz. Prüfe Vorschläge sorgfältig, bevor du sie für deine Anwendung übernimmst.