Netscape String bei HTTP_USER AGENT
Dave
- php
0 Tobias0 MudGuard0 Thomas Luethi
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
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
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
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