In diesem Tutorial erkläre ich ihnen, wie sie eine Browserweiche realisieren. Die Browserweichen wird mit PHP umgesetzt als eine eigene PHP Funktion.
Diese PHP Funktion gestalten wir so schlau, dass man mit Angabe einer Art Variable unterscheiden kann, ob wir nur den Browsernamen ermitteln möchten oder die gesamte Seite umleiten. Im nachfolgenden Beispiel wird die gesamte Funktion erklärt. Nachdem die Funktion erklärt wurde, wird anschließend mit zwei unterschiedlichen Beispielen die Verwendung dieser Funktion erklärt.
Die Browserweiche unterstützt folgende Browser: Mozilla, Opera, Internet Explorer und den Google Chrome Browser.
Hier nun die PHP Funktion:
<?php
/*
* Created on 22.09.2009 by Nico Schubert
*/
/**
* @example browserweiche($art, $location);
* Beschreibung: Es muss $art übergeben werden.
* $art = 1 wird per haeder() eine Weiterleitung
* eingeleitet, wenn noch kein Haeder gesendet
* wurde. Bei $art = 2 wird nur der Browsername
* zurück gegeben. Die Variable $location muss
* in ein Array übergeben werden. In diesen
* Array, werden die Url gespeichert, wohin
* weitergeleitet werden soll.
*
* @return String wenn $art = 2 ist oder ein
* Fehler beim ausführen ensteht
*
* @author Nico Schubert->Webseite: https://www.php-space.info
*/
function browserweiche($art = '', $location = array()) {
if(!isset($_SERVER['HTTP_USER_AGENT'])){
$user_agent='x';
} else {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
}
$return = '';
/**
* Check $location, bei ungültige übergabe
* wird Fehlerstring zurück gegeben.
*/
if (count($location) !== 6) $art = 3;
switch ($art) {
case '1':
/**
* haeder() Weiterleitung
*/
if (preg_match('/opera/', $user_agent)) {
if (headers_sent() == false AND $location['opera'] != '') {
header('Location:'.$location['opera']);
}
} elseif(preg_match('/firefox/', $user_agent)) {
if (headers_sent() == false AND $location['firefox'] != '') {
header('Location:'.$location['firefox']);
}
} elseif(preg_match('/Mozilla/', $user_agent)) {
if (headers_sent() == false AND $location['mozilla'] != '') {
header('Location:'.$location['mozilla']);
}
} elseif(preg_match('/msie/', $user_agent)) {
if (headers_sent() == false AND $location['ie'] != '') {
header('Location:'.$location['ie']);
}
} elseif(preg_match('/Chrome/', $user_agent)) {
if (headers_sent() == false AND $location['chrome'] != '') {
header('Location:'.$location['chrome']);
}
} else {
if (headers_sent() == false AND $location['default'] != '') {
header('Location:'.$location['default']);
}
}
break;
case '2':
/**
* Return des Browsernamen
*/
if (preg_match('/opera/', $user_agent)) {
$return = 'Opera';
} elseif(preg_match('/firefox/', $user_agent)) {
$return = 'Firefox';
} elseif(preg_match('/Mozilla/', $user_agent)) {
$return = 'Mozilla';
} elseif(preg_match('/msie/', $user_agent)) {
$return = 'Internet Explorer';
} elseif(preg_match('/Chrome/', $user_agent)) {
$return = 'Google Chrome';
} else {
$return = 'Browser konnte ';
$return .= 'nicht ermittelt werden!';
}
break;
case '3':
/**
* Return Fehler bei der
* übergabe von $location
*/
$return = 'Die Variable $location ';
$return .= 'wurde fehlerhaft übergeben!';
break;
default:
/**
* Ungültiger Aufruf!
*/
$return = 'Action wurde bei der ';
$return .= 'Function browserweiche() ';
$return .= 'nicht gesetzt';
break;
}
return($return);
}
/**
* Url für Opera
*/
$location['opera'] = 'opera.html';
/**
* Url für Firefox
*/
$location['firefox'] = 'firefox.html';
/**
* Url für Mozilla
*/
$location['mozilla'] = 'mozilla.html';
/**
* Url für Internet Explorer
*/
$location['ie'] = 'ie.html';
/**
* Url für Google Chrome
*/
$location['chrome'] = 'chrome.html';
/**
* Url für andere Browser
*/
$location['default'] = 'default.html';
/**
* Beispiel für Browserausgabe,
* wenn keine Ausgabe erwünscht ist,
* so löschen Sie bitte:
* echo browserweiche('2',$location);
*/
echo browserweiche('2', $location);
/**
* Beispiel für Browser Weiterleitung,
* es darf hierbei keine Ausgabe vorher
* vom Script ausgegeben werden, sonst
* wird die Seite nicht umgeleitet.
*/
echo browserweiche('1', $location);
?>
Erklärung:
Dieser PHP-Code enthält die Funktion browserweiche(), welche bei der Übergabe eines Parameters $art und eines Arrays $location überprüft, welcher Browser verwendet wird.
Der Parameter $art kann den Wert 1 oder 2 annehmen. Wird $art = 1 übergeben, wird anhand des Browsers, welcher durch den User-Agenten ermittelt wird, eine Weiterleitung durch einen Header()-Aufruf durchgeführt. Jeder Browser bekommt dabei seine eigene URL zugewiesen und die Variable $location muss ein Array sein, welches die jeweiligen URLs enthält. Wird $art = 2 übergeben, so wird lediglich der Name des Browsers zurückgegeben.
Nach dem Prüfen des Parameters $art wird der User-Agent überprüft. Falls der User-Agent nicht definiert ist, wird die Variable $user_agent auf den Wert 'x' gesetzt. Anschließend wird durch preg_match() festgestellt, welcher Browser verwendet wird.
Sollte kein Header()-Aufruf vorher ausgeführt worden sein und $location nicht leer sein, wird der jeweilige Browser mittels des Headers()-Aufrufs weitergeleitet.
Sollte $location ein ungültiges Array sein, so wird $art auf den Wert 3 gesetzt und ein Fehlerstring zurückgegeben.
Wenn $art = 2 sein sollte, so wird anhand des User-Agents der Name des Browsers zurückgegeben. Sollte der Browser nicht ermittelt werden können, wird ein Fehlerstring zurückgegeben.
Zum Schluss wird der Rückgabewert, welcher vom Typ String sein muss, zurückgegeben.
Weiterführende Links:
PHP Function – Erklärung, wie man mit PHP Funktion arbeitet.
Php Array – Hier wird ihnen erklärt, wie sie PHP Arrays verwenden.