phpbar.de logo

Mailinglisten-Archive

Re: [php] $HTTP_USER_AGENT
Archiv Mailingliste php_(at)_infosoc.uni-koeln.de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [php] $HTTP_USER_AGENT



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
" );

?>






Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive