![]() 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