Met de waarde HTTP_USER_AGENT kunnen de internetbrowser en het besturingssysteem van de bezoeker worden achterhaald. De uitkomst van deze superglobal is een lange zin met data. Gebruikers kunnen direct aan deze zin zien dat het besturingssysteem van de bezoeker ‘Windows NT 6.1’ (dat is Windows 7) is, en dat de internetbrowser ‘Chrome versie 14.0.835.202’ is.

Nu wil ik een script maken dat deze gegevens uit de HTTP_USER_AGENT output filtert.

Tot nu toe heb ik dit: Weet iemand waar de fout(en) zitten? en zou hij/zij die voor mij kunnen verbeteren? Ik kom er zelf niet meer uit.
<?php
public static function detectBrowser()    {
        if( !isset( $_SERVER['HTTP_USER_AGENT'])){
    $name = "none";
}else{
     $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);

    if (preg_match('/opera/', $userAgent)) {
        $name = 'opera';
    }


        if (preg_match('/opera/', $userAgent)) {
            $name = 'opera';
        }
        elseif (preg_match('/webkit/', $userAgent)) {
            $name = 'safari';
        }
        elseif (preg_match('/msie/', $userAgent)) {
            $name = 'msie';
        }
        elseif (preg_match('/mozilla/', $userAgent) && !preg_match('/compatible/', $userAgent)) {
            $name = 'mozilla';
        }
        else {
            $name = 'unrecognized';
        }

        if (preg_match('/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/', $userAgent, $matches)) {
            $version = $matches[1];
        }
        else {
            $version = 'unknown';
        }

        if (preg_match('/linux/', $userAgent)) {
            $platform = 'linux';
        }
        elseif (preg_match('/macintosh|mac os x/', $userAgent)) {
            $platform = 'mac';
        }
        elseif (preg_match('/windows|win32/', $userAgent)) {
            $platform = 'windows';
        }
        else {
            $platform = 'unrecognized';
        }
return array(
            'name'      => $name,
            'version'   => $version,
            'platform'  => $platform,
            'userAgent' => $userAgent,
            );
    }
?>


Reageren