phpbar.de logo

Mailinglisten-Archive

[php] $HTTP_USER_AGENT

[php] $HTTP_USER_AGENT

Thomas Feyrer Dante_(at)_altmuehlnet.de
Thu, 01 Jul 1999 20:54:06 +0200


--=====================_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