Mailinglisten-Archive |
At 18:34 01.07.99 +0200, Rudolf Koch wrote: >Ich habe bei meinem Counter folgende Probleme: > >mit -- if(eregi("MSIE 4",$HTTP_USER_AGENT)) -- überprüfe ich, ob der User >den ie4 hat. Wie aber kann ich feststellen, welcher Wert dieser bei Netscape >oder Aol ist, zudem Netscape noch beim user_agent ziemlich andere Werte >ausgibt. > >Wie kann ich das Betriebsystem feststellen? Netscape zeigt den Wert "Win95", >IE zeigt "Windows 95", welchen Werte sind diese bei Linux, etc. Es wäre gut, >wenn jemand alle Werte von Browsern und Betriebssystemen, die zu allen >Browsern kompatibel sind. (z.b. "Win" und "95" sind ja in beiden user_agents >der Browser enthalten. Hi, ich arbeite an ähnlichem... ich bin dabei, ein auswert-script zu schreiben, dass alle Möglichen Informationen aus dem User rausholt... *HAHA* ;) Ich bin schon ein bisschen weiter als du... allerdings steck ich auch noch mittendrin... siehe an dem $ua = "..."; am anfang, welches den echten User-Agent überschreibt... ich hab das bisherige script mal angehängt, vielleicht bringt es dich weiter... dabei ist mir übrigens was aufgefallen, PHP3 such bei regexp immer die größtmögliche "antwort", bei perl konnte man das mit irgendeinem flag oder sowas einstellen, das es halt nicht die größtmögliche sondern die kleinstmögliche findet... Bsp: <?php $ua = $USER_AGENT; if( eregi( "Win(.*)(\);)", $ua, $win_ver ) ) $win_ver = $win_ver[1]; if( eregi( "Windows(.*)(\);)", $ua, $win_ver ) ) $win_ver = $win_ver[1]; ?> Nehmen wir nun mal 2 verschiedene User-Agents-Kennungen: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98; TUCOWS) Mozilla/4.0 (compatible; MSIE 4.01; Windows NT) So, und schon ist das Problem da, beim 2. wird $win_ver den korrekten Wert enthalten, also " NT" (das leerzeichen wird nacher per trim() elimeniert), beim ersten allerdings steht in $win_ver folgendes: " 98; TUCOWS)", da er nach dem größtmöglichen Ergebnis gesucht hat, das \) erlaubt ihm ja bis dorthin zu gehen... Gibt es keine Möglichkeit PHP3 dazu zu bringen, das kleinstmögliche Ergebnis zu präsentieren, wäre vielleicht was für PHP/3.0.12 oder so... allerdings bin ich keiner der beteiligten Programmierer und C kann ich auch (noch) nicht... Wo könnte man den solche "Wünsche" bzw. Vorschläge ähh.. vorschlagen ;) ? Bye Dante
<? $header = getallheaders(); $ua = $header['User-Agent']; $ua = "Mozilla/4.0 [en] (compatible; Opera/3.0; Windows 4.10) 3.51"; list( $browser, $ua ) = split( "/", $ua, 2 ); list( $version, $ua ) = split( " ", $ua, 2 ); if( $browser == "Mozilla" ) { $moz_browser = true; $browser = "Netscape"; $moz_ver = $version; if( ereg( "\[([a-z]{2})\]", $ua, $language ) ) $language = $language[1]; if( eregi( "MSIE", $ua ) ) { eregi( "MSIE ([0-9]\..+);", $ua, $version ); $version = $version[1]; $browser = "Internet Explorer"; } if( eregi( "Opera", $ua, $version ) ) { eregi( "Opera[/ ]([0-9]\..+);", $ua, $version ); $version = $version[1]; $browser = "Opera"; } if( eregi( "Win(nt|[0-9]{1,2})", $ua, $win_ver ) ) $win_ver = $win_ver[1]; if( eregi( "Windows(nt|[0-9]{1,2})", $ua, $win_ver ) ) $win_ver = $win_ver[1]; if( $win_ver ) $win_ver = trim( $win_ver ); if( $win_ver == "95" ) $win[95]++; elseif( $win_ver == "98" ) $win[98]++; elseif( $win_ver == "16" || ereg( "^3\.", $win_ver ) ) $win[16]++; elseif( eregi( "nt", $win_ver ) || ereg( "4\..+", $win_ver ) ) $win[nt]++; } echo( "Mozilla-Browser? " ); if( $moz_browser ) echo( "Ja" ); echo( "Mozilla-Version: $moz_ver Sprache: $language Browser: $browser Browser-Version: $version Windows-Version: $win_ver " ); ?>
php::bar PHP Wiki - Listenarchive