Problem bei ermittlung des OS

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem bei ermittlung des OS

    Ich will für einen Statistikbereich das OS des Besuchers auslesen,
    ich verwende dazu folgenden COde:

    PHP-Code:
    <?php
    $os_list 
    = array("unknown" => "unbekannt",
        
    "AmigaOS 3.0" => "AmigaOS 3.0",
        
    "Win16" => "Windows 3.1",
        
    "Windows NT 4.0" => "Windows NT",
        
    "Windows NT 5.0" => "Windows 2000",
        
    "Windows NT 5.1" => "Windows XP",
        
    "WIndows NT" => "Windows NT",
        
    "Windows 95" => "Windows 95",
        
    "Windows 98" => "Windows 98",
        
    "Windows ME" => "Windows ME",
        
    "Windows 2000" => "Windows 2000",
        
    "Windows XP" => "Windows XP",
        
    "Win95" => "Windows 95",
        
    "Win98" => "Windows 98",
        
    "WinNT4" => "Windows NT",
        
    "WinNT" => "Windows NT",
        
    "Debian" => "Linux",
        
    "HP-UX" => "HP-UX",
        
    "SunOS" => "Sun Solaris",
        
    "AIX" => "AIX",
        
    "BeOS" => "BeOS",
        
    "Linux" => "Linux",
        
    "OpenBSD" => "OpenBSD",
        
    "Macintosh" => "Macintosh",
        
    "Mac_PowerPC" => "Power Mac",
        
    "IRIX" => "IRIX",
        );
        
    $agentstring getenv("HTTP_USER_AGENT");
        
    preg_match("#(" str_replace(array(".","(",")","?"),array("\.","\(","\)","\?"), implode("|"$os_list)) . ")#i"$agentstring$matches);
        if (isset(
    $matches[1])) $system $matches[1];

    echo 
    $system"<br>";
    echo 
    getenv("HTTP_USER_AGENT");
    ?>
    Allerdings gibt er mir (Windows XP) immer an ich nutze NT, die Ausgaben lautet bei mir:
    Code:
    Windows NT
    Mozilla/5.0 (Windows; U; Windows NT 5.1; de-AT; rv:1.6) Gecko/20040113
    Wo liegt mein Denkfehler?
    Anwälte in Vulkane werfen -
    Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

  • #2
    Das Problem scheint zu sein, daß Du nur den ersten Match deines preg_replace ausliest - und der erste Match ist logischerweise "Windows NT" und nicht "Windows NT 5.1". Ich würde das mit einer Schleife machen, das Array durchtesten und $system bei jedem Treffer überschreiben, damit dann der letzte Match übrigbleibt.

    Kommentar


    • #3
      Gab neulich mal ein Codeschnipsel dafür (Browseragenten, und auf der Seite, auf die ich gelinkt habe auch noch das Betriebssystem).

      http://www.php-resource.de/forum/sho...0&pagenumber=3
      PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

      Kommentar


      • #4
        Original geschrieben von Floriam
        Gab neulich mal ein Codeschnipsel dafür (Browseragenten, und auf der Seite, auf die ich gelinkt habe auch noch das Betriebssystem).

        http://www.php-resource.de/forum/sho...0&pagenumber=3
        das ist ja der Codeschnipsel
        Anwälte in Vulkane werfen -
        Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

        Kommentar


        • #5
          Mhn, stimmt, allerdings etwas in abgeänderter Form (der Array mit den Systemen), wieso?
          PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

          Kommentar


          • #6
            habs nun abgeändert

            läuft nun, habs mit foreach() gelöst
            Anwälte in Vulkane werfen -
            Wer anderen eine Bratwurst brät, der besitzt ein Bratwurstbratgerät!

            Kommentar

            Lädt...
            X