Geschrieben von i-spacke am 03.10.2005, 11:34

Ihr kennt es bestimmt. Man setzt sich hin und macht mit mehr oder weniger viel Mühe ein schönes CSS-Design.
Letztendlcih ärgert man sich dann, dass es nur in bestimmten Browsern richtig angezeigt wird.
Nun gibt es Möglichkeiten das ganze mit Javascript zu lösen oder wenn man zwischen Firefox und Internet Explorer unterscheiden wollte so:


<html>
<head>
<title>Kekse</title>

<!-- Stylesheet für Firefox -->

<link rel="stylesheet" href="style/ff.css" type="text/css" />

<!--[if gte IE 5.5]>
<link rel="stylesheet" href="style/ie.css" type="text/css" />
<![endif]-->

</head>
<body>
<!-- Inhalt -->
</body>
</html>

Diese Methode ist erstens nicht so komfortabel und zweitens kann man ja auch nur zwischen einem belibigen Browser und dem Internet Explorer unterscheiden.

Man kann das problem aber auch ganz einfach mit PHP lösen. Man braucht noch nicht mal viel Code.
Das einzige was man natürlich braucht sind entweder optimierte Stylesheets oder verschiedene Seiten.

Also als erstes brauchen wir eine Funktion, die herausfindet mit welchem Browser der User unterwegs ist.

Schreibt diesen Code einfach in eure functions.php oder dort wo ihr eure anderen Funktionen habt hinein.


<?
function browser()
{
if (strstr($_SERVER['HTTP_USER_AGENT'],'Opera')) //$_SERVER['HTTP_USER_AGENT'] nach "Opera" durchsuchen
$browser="opera"; //und die Variable auf "opera" setzen

elseif (strstr($_SERVER['HTTP_USER_AGENT'],'MSIE')) //$_SERVER['HTTP_USER_AGENT'] nach "MSIE" durchsuchen
$browser="ie"; //und die Variable auf "ie" setzen

elseif (strstr($_SERVER['HTTP_USER_AGENT'],'Mozilla')) //$_SERVER['HTTP_USER_AGENT'] nach "Mozilla" durchsuchen
$browser="mozilla"; //und die Variable auf "mozilla"" setzen

return $browser; //Wert zurückgeben
}
?>

Schauen wir uns zuerst die Ausgaben von $_SERVER['HTTP_USER_AGENT'] an:

Opera: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; de) Opera 8.02
Internet Explorer: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Mozilla: Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.7.8) Gecko/20050511 Firefox/1.0.4

Wie man sieht steht überall Mozilla drin und deswegen muss man den String auch als letztes nach Mozilla durchsuchen.
MSIE Steht in 2 Strings und deswegen wird danach an zweiter Stelle gesucht.
Opera steht natürlich nur bei Opera drin. Ich denke das dürfte soweit klar sein.

Die funktion kann man denke ich natürlich noch um andere Browser erweitern wobei man aber auf die Reihenfolge aufpassen muss.

Nun haben wir also ermittelt welchen Browser der User benutzt. Was nun?
Jetzt steht es euch eigentlich frei was ihr machen wollte.
Ich persönlich habe mehrere Stylesheets und verwende folgende Methode:

browser.php:

<?
$browser = browser();

if ($browser == "ie")
echo "<link rel=\"stylesheet\" href=\"style/ie.css\" type=\"text/css\" />";

elseif ($browser == "mozilla")
echo "<link rel=\"stylesheet\" href=\"style/mozilla.css\" type=\"text/css\" />";

elseif ($browser == "opera")
echo "<link rel=\"stylesheet\" href=\"style/opera.css\" type=\"text/css\" />";
?>

Je nachdem welchen Browser der User benutzt wird ein anderes Stylesheet included.
Die Datei browser.php muss man dann einfach nur noch in den <head>-Bereich includen oder man fügt den code dort ein.

Ihr könnt natürlich auch anstatt ein Stylesheet einzufügen auch mit header("location: ") irgendwohin weiterleiten oder einfach nur einen String ausgeben.
Die Funktion lässt sich ebensogut für Statistiken verwenden.

Falls ihr noch irgendwelche Fragen habt könnt ihr mir einfach eine PN schicken.
mfg Spacke

Bewertung Anzahl
6
74,1 %
20 Bewertungen
5
18,5 %
5 Bewertungen
4
7,4 %
2 Bewertungen