Dave: Netscape String bei HTTP_USER AGENT

Hallo,
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,

Dave

  1. Hallo Dave

    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

    in $_SERVER["HTTP_USER_AGENT"] steht beim NS 4.77/en das:
    Mozilla/4.77 [en] (Windows NT 5.0; U)

    Zeichen sind ja z.B. beim IE gleich (Mozilla/4....). Es würde auch

    beim IE steht das: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

    wenn du also den NS 4.x erkennen willst musst du überprüfen ob
    vorne 4.xx steht und ob nicht MSIE drinsteht (genauen Ausdruck dafür kann ich dir nicht sagen da ich mich damit nicht so auskenne)

    hth
    Tobias

  2. Hi,

    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?

    Das geht gar nicht. Wenn ein bestimmter String in HTTP_USER_AGENT drin steht, dann bedeutet das nur, daß dieser bestimmte String in HTTP_USER_AGENT drinsteht.
    Was für ein HTTP-Client diesen String erzeugt hat, kannst Du HTTP-serverseitig nicht feststellen.

    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.

    Es gibt keine Methode, die sichere Ergebnisse liefern kann.

    Da bei den Browsern die Strings auch noch einstellbar sein können, funktioniert noch nicht mal der Umkehrschluß ("wenn nicht 'Mozilla 1.1' drinsteht, kann es kein 'Mozilla 1.1' sein", da es sich ja um einen Mozilla 1.1 mit verändertem String handeln könnte)

    Andreas

  3. 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