Start · Sprachen · PHP · Referenz · get_browser

get_browser

Funktion

Ermittelt die Fähigkeiten und Eigenschaften eines Browsers anhand des User-Agent-Strings mithilfe der <code>browscap.ini</code>-Datei.

seit PHP 4.0.0 Kategorie: misc

Signatur

get_browser(string|null $user_agent = null, bool $return_array = false): object|array|false

Beschreibung

get_browser() durchsucht die browscap.ini-Datei (Browser Capabilities) nach dem übergebenen User-Agent-String und gibt ein Objekt oder Array mit Informationen über den Browser zurück. Diese Informationen umfassen unter anderem den Browsernamen, die Version, das Betriebssystem, die Unterstützung von JavaScript, Cookies und anderen Web-Technologien.

Damit die Funktion verwendet werden kann, muss in der php.ini die Direktive browscap auf den Pfad einer gültigen browscap.ini-Datei zeigen (z. B. browscap = /path/to/browscap.ini). Eine aktuelle Datei kann von browscap.org heruntergeladen werden.

Wird $user_agent auf null gesetzt, verwendet PHP automatisch den User-Agent-String des aktuellen HTTP-Requests aus $_SERVER['HTTP_USER_AGENT']. Mit dem Parameter $return_array kann gesteuert werden, ob das Ergebnis als Objekt (Standard) oder als assoziatives Array zurückgegeben wird.

Hinweis: Da Browser-Identifikation über den User-Agent manipulierbar ist, sollte get_browser() nur für optionale Optimierungen (z. B. Feature-Detection für Ausgabeformatierung) genutzt werden, nie für Sicherheitsentscheidungen. Moderne Alternativen wie Client-seitiges Feature-Detection via JavaScript sind in vielen Fällen zuverlässiger.

Parameter

Name Typ Default Beschreibung
$user_agent string|null null Der zu analysierende User-Agent-String. Bei null wird $_SERVER['HTTP_USER_AGENT'] des aktuellen Requests verwendet.
$return_array bool false Gibt an, ob das Ergebnis als assoziatives Array (true) oder als Objekt (false, Standard) zurückgegeben werden soll.

Rückgabewert

Typ
object|array|false
Beschreibung
Gibt ein Objekt (oder bei $return_array = true ein assoziatives Array) mit den Browser-Eigenschaften zurück. Liefert false, wenn die browscap.ini-Datei nicht konfiguriert ist oder der User-Agent nicht gefunden wurde.

Beispiele

Browser-Informationen des aktuellen Nutzers ermitteln

<?php
// browscap muss in php.ini konfiguriert sein:
// browscap = /etc/php/browscap.ini

$browser = get_browser(null, true);

if ($browser !== false) {
    echo 'Browser: '    . $browser['browser']        . "\n";
    echo 'Version: '    . $browser['version']        . "\n";
    echo 'Plattform: '  . $browser['platform']       . "\n";
    echo 'JavaScript: ' . ($browser['javascript'] ? 'Ja' : 'Nein') . "\n";
    echo 'Cookies: '    . ($browser['cookies']    ? 'Ja' : 'Nein') . "\n";
} else {
    echo 'browscap.ini nicht verfügbar.';
}
Browser: Chrome Version: 120.0 Plattform: Win11 JavaScript: Ja Cookies: Ja

Benutzerdefinierten User-Agent analysieren

<?php
// Einen spezifischen User-Agent-String übergeben
$ua = 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) '
    . 'AppleWebKit/605.1.15 (KHTML, like Gecko) '
    . 'Version/16.0 Mobile/15E148 Safari/604.1';

$info = get_browser($ua);

if ($info !== false) {
    echo 'Browser:   ' . $info->browser   . "\n";
    echo 'Mobilgerät: ' . ($info->ismobiledevice ? 'Ja' : 'Nein') . "\n";
    echo 'Plattform: ' . $info->platform   . "\n";
} else {
    echo 'Keine Browser-Information gefunden.';
}
Browser: Safari Mobilgerät: Ja Plattform: iOS

// Wichtig · Fallstricke

Konfiguration erforderlich: Die Funktion ist ohne eine korrekt eingerichtete browscap-Direktive in der php.ini nicht funktionsfähig und gibt false zurück. Auf Shared-Hosting-Umgebungen ist dies häufig nicht verfügbar.

Aktualität der Datenbank: Die browscap.ini-Datei veraltet schnell, da ständig neue Browser-Versionen erscheinen. Es empfiehlt sich, regelmäßig eine aktuelle Version von browscap.org herunterzuladen. Als Alternative bieten sich PHP-Bibliotheken wie browscap-php an, die keine INI-Konfiguration benötigen.

Sicherheit: Der User-Agent-String kann vom Client frei gesetzt und gefälscht werden. Sicherheitskritische Entscheidungen dürfen niemals auf Basis von get_browser() getroffen werden.

Performance: Das Parsen der browscap.ini kann je nach Dateigröße langsam sein. Ergebnisse sollten ggf. gecacht werden.

Siehe auch