Thomas Luethi: Netscape String bei HTTP_USER AGENT

Beitrag lesen

weiss jemand von euch, wie man NS 4.x am String durch HTTP_USER_AGENT (PHP) erkennt? Also welchen substring man rauskriegen muss um sicherzugehen, dass es auch wirklich NS 4.x ist? Die ersten Zeichen sind ja z.B. beim IE gleich (Mozilla/4....). Es würde auch eine andere Methode in Ordnung sein. Falls es eine gibt. Danke,

Die JavaScript-Variable navigator.userAgent ist meistens identisch mit  $HTTP_USER_AGENT.

Ein paar davon habe ich aufgelistet unter:
http://www.tiptom.ch/tests/useragent.html
Dort kannst Du auch schauen, wie sich Dein Browser mit JavaScript und gegenueber dem Webserver identifiziert.

Netscape 4.75 (deutsch) identifiziert sich so:
Mozilla/4.75 [de] (Win98; U)

MS Internet Explorer 5.5 identifiziert sich so:
Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)

Opera 5.12 mit der Option "Als Mozilla/Netscape 4.76 ausgeben" identifiziert sich so:
Mozilla/4.76 (Windows 98; U) Opera 5.12  [de]

Bei der Auswertung von $HTTP_USER_AGENT solltest Du also darauf achten, dass die Variable mit "Mozilla/4." anfaengt, aber weder "Opera" noch "MSIE" enthaelt.

Ich persoenlich sehe den Sinn von serverseitigen Browserweichen nicht ein, im Gegenteil, ich finde sie ziemlich bescheuert, gerade auch, weil sie unzuverlaessig sind (wie MudGuard schon schrieb) und weil sie oft dazu verwendet werden, Benutzer mit "nicht genuegend modernen" Browsern auszusperren.

Wenn es Dir darum geht, dem Netscape 4.x ein eigenes Stylesheet zu liefern, bzw. ein kompliziertes Stylesheet vor ihm zu verstecken, gibt es viel elegantere Moeglichkeiten, siehe:
http://pixels.pixelpark.com/~koch/hide_css_from_browsers/

Die IMHO einfachste Loesung (client-seitig, z.T. mit JavaScript) ist folgendes:

<link rel="stylesheet" type="text/css" href="normal.css"
  media="screen,projection" title="Normales Stylesheet" />

<script type="text/javascript">
 if(document.layers) {
   document.writeln("<link rel='stylesheet' type='text/css'
   href='nn4.css' media='screen'`title='Netscape4-Style' /" + ">");
  }
</script>

Erklaerung: Das obere Stylesheet normal.css wird von Netscape 4.x nicht eingebunden, weil dort media="screen,projection" steht. Die besseren Browser (MSIE ab 4, Mozilla, Opera) binden das Stylesheet aber ein.

Das untere Stylesheet wird nur von Netscape 4.x eingebunden, weil nur dieser Browser document.layers kennt. Und weil im Netscape 4.x CSS sowieso nur funktioniert, wenn auch JavaScript aktiviert ist, ist es ausnahmsweise gestattet, eine JavaScript-abhaengige Loesung zu waehlen.

Vielleicht helfen Dir auch ein paar Postings in dciwam weiter:
http://groups.google.ch/groups?selm=3c7abb81.40580998@news.cis.dfn.de
http://groups.google.ch/groups?selm=3d368d4d.6167139@news.cis.dfn.de

HTH, mfg
Thomas