Mailinglisten-Archive |
--=====================_930848046==_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 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)) -- =FCberpr=FCfe 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=E4re= 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 =E4hnlichem... ich bin dabei, ein auswert-script zu schreiben, dass alle M=F6glichen Informationen aus dem User rausholt... *HAHA* ;) Ich bin schon ein bisschen weiter als du... allerdings steck ich auch noch mittendrin... siehe an dem $ua =3D "..."; am anfang, welches den echten User-Agent =FCberschreibt... ich hab das bisherig= e script mal angeh=E4ngt, vielleicht bringt es dich weiter... dabei ist mir =FCbrigens was aufgefallen, PHP3 such bei regexp immer die gr=F6=DFtm=F6gliche "antwort", bei perl konnte man das mit irgendeinem flag = oder sowas einstellen, das es halt nicht die gr=F6=DFtm=F6gliche sondern die kleinstm=F6gliche findet... Bsp: <?php $ua =3D $USER_AGENT; if( eregi( "Win(.*)(\);)", $ua, $win_ver ) ) $win_ver =3D $win_ver[1]; if( eregi( "Windows(.*)(\);)", $ua, $win_ver ) ) $win_ver =3D $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=F6=DFtm=F6glichen Ergebnis gesucht hat, das \) erlaubt ihm ja bi= s dorthin zu gehen... Gibt es keine M=F6glichkeit PHP3 dazu zu bringen, das kleinstm=F6gliche Ergebnis zu pr=E4sentieren, w=E4re vielleicht was f=FCr PHP/3.0.12 oder so..= . allerdings bin ich keiner der beteiligten Programmierer und C kann ich auch (noch) nicht... Wo k=F6nnte man den solche "W=FCnsche" bzw. Vorschl=E4ge =E4hh.. vorschlagen= ;) ? Bye Dante --=====================_930848046==_ Content-Type: text/plain; charset="us-ascii" Content-Disposition: attachment; filename="auswert.inc" <? $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 " ); ?> --=====================_930848046==_ Content-Type: text/plain; charset="us-ascii" --=====================_930848046==_--
php::bar PHP Wiki - Listenarchive