Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

Browserweiche mit PHP: Browser erkennen und moderne Alternativen

Sie befinden sich: Home > Php Tutorial > Browserweiche mit PHP:...

Browserweiche mit PHP: Browser erkennen und moderne Alternativen


Eintrag am:  22.09.2009
Hits / Besucher:  14841
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Eine Browserweiche erkennt den verwendeten Browser des Besuchers anhand des User-Agent-Strings. In der Vergangenheit wurde diese Technik häufig eingesetzt, um browserspezifische Inhalte oder Weiterleitungen zu realisieren. Heute gibt es dafür bessere Alternativen.

Wichtig: Die Browser-Erkennung über den User-Agent ist unzuverlässig, da Browser ihre User-Agent-Strings gegenseitig imitieren. Für Layout-Anpassungen sollten Sie stattdessen Responsive Design mit CSS verwenden. Die hier gezeigte Technik ist nur noch in Ausnahmefällen sinnvoll, z.B. für Statistiken oder Browser-spezifische Download-Links.

Den User-Agent in PHP auslesen

PHP stellt den User-Agent-String über die Server-Variable $_SERVER['HTTP_USER_AGENT'] bereit. Dieser String enthält Informationen zum Browser, Betriebssystem und der Rendering-Engine.

<?php

/** User-Agent sicher auslesen */
$userAgent = $_SERVER['HTTP_USER_AGENT'] ?? '';
echo htmlspecialchars($userAgent, ENT_QUOTES, 'UTF-8');
?>

Hinweis: Der User-Agent kann vom Benutzer beliebig geändert werden und sollte daher nie für sicherheitsrelevante Entscheidungen verwendet werden.

Browser erkennen mit PHP

Die folgende Funktion erkennt die gängigsten Browser. Dabei ist die Reihenfolge der Prüfungen entscheidend, da viele Browser den String "Mozilla" oder "Safari" im User-Agent enthalten, obwohl sie andere Browser sind:

<?php

/**
* Erkennt den Browser anhand des User-Agent-Strings.
*
* Wichtig: Die Reihenfolge der Prüfungen ist entscheidend!
* Chrome enthält z.B. auch "Safari" und "Mozilla" im User-Agent.
* Daher muss Chrome VOR Safari und Mozilla geprüft werden.
*
* @return string Der erkannte Browsername
*/
function browser_erkennen(): string
{
$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
$ua_lower = strtolower($ua);

/** Reihenfolge beachten: Speziellere Browser zuerst prüfen */
if (str_contains($ua_lower, 'edg/')) {
return 'Microsoft Edge';
}
if (str_contains($ua_lower, 'opr/') || str_contains($ua_lower, 'opera')) {
return 'Opera';
}
if (str_contains($ua_lower, 'chrome') && !str_contains($ua_lower, 'edg/')) {
return 'Google Chrome';
}
if (str_contains($ua_lower, 'safari') && !str_contains($ua_lower, 'chrome')) {
return 'Safari';
}
if (str_contains($ua_lower, 'firefox')) {
return 'Firefox';
}

return 'Unbekannter Browser';
}

echo 'Ihr Browser: ' . browser_erkennen();
?>

Warum ist die Reihenfolge wichtig?

Ein typischer Chrome User-Agent enthält sowohl "Chrome", "Safari" als auch "Mozilla". Würde man zuerst auf "Mozilla" oder "Safari" prüfen, würde Chrome falsch erkannt werden. Deshalb müssen speziellere Browser (Edge, Opera, Chrome) vor den allgemeineren (Safari, Firefox) geprüft werden.

Moderne Alternativen zur Browserweiche

In den meisten Fällen gibt es heute bessere Lösungen als eine serverseitige Browser-Erkennung:

1. Responsive Design mit CSS Media Queries

Für unterschiedliche Bildschirmgrößen verwenden Sie CSS Media Queries statt einer Browserweiche:

/* CSS: Layout passt sich automatisch an */

@media (max-width: 768px) {
.navigation { display: none; }
.mobile-menu { display: block; }
}
@media (min-width: 769px) {
.navigation { display: flex; }
.mobile-menu { display: none; }
}

2. Feature Detection mit JavaScript

Prüfen Sie, ob ein bestimmtes Feature verfügbar ist, anstatt den Browser zu erkennen:

// JavaScript: Feature Detection

/* statt Browser Detection */
if ('serviceWorker' in navigator) {
// Service Worker wird unterstützt
navigator.serviceWorker.register('/sw.js');
}

if ('IntersectionObserver' in window) {
// Lazy Loading mit IntersectionObserver
} else {
// Fallback für ältere Browser
}

Zusammenfassung

  • Der User-Agent-String ist unzuverlässig und kann manipuliert werden
  • Bei der Browser-Erkennung ist die Reihenfolge der Prüfungen entscheidend (speziellere Browser zuerst)
  • Verwenden Sie str_contains() (ab PHP 8.0) oder stripos() !== false für die Prüfung
  • Für Layout-Anpassungen: CSS Media Queries (Responsive Design)
  • Für Browser-Features: Feature Detection in JavaScript
  • Browser-Erkennung nur noch für Statistiken oder spezifische Download-Links verwenden

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.