Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • Identifying Browser & Platform

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 161
    Comment on it

    PHP has given some useful environment variable that are there in the phpinfo.php page that was used to setup the PHP environment.The best environment variables set by PHP is HTTP_USER_AGENT which identifies the user's browser and operating system.

    PHP has a function getenv() to access the value of all the environment variables. The information contained in the HTTP_USER_AGENT environment variable is used to create dynamic content matchable to the browser.

    ex

    <html>
       <body>
       
          <?php
             function getBrowser() { 
                $u_agent = $_SERVER['HTTP_USER_AGENT']; 
                $bname = 'Unknown';
                $platform = 'Unknown';
                $version = "";
                
                //First get the platform?
                if (preg_match('/linux/i', $u_agent)) {
                   $platform = 'linux';
                }elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
                   $platform = 'mac';
                }elseif (preg_match('/windows|win32/i', $u_agent)) {
                   $platform = 'windows';
                }
                
                // Next get the name of the useragent yes seperately and for good reason
                if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) {
                   $bname = 'Internet Explorer';
                   $ub = "MSIE";
                } elseif(preg_match('/Firefox/i',$u_agent)) {
                   $bname = 'Mozilla Firefox';
                   $ub = "Firefox";
                } elseif(preg_match('/Chrome/i',$u_agent)) {
                   $bname = 'Google Chrome';
                   $ub = "Chrome";
                }elseif(preg_match('/Safari/i',$u_agent)) {
                   $bname = 'Apple Safari';
                   $ub = "Safari";
                }elseif(preg_match('/Opera/i',$u_agent)) {
                   $bname = 'Opera';
                   $ub = "Opera";
                }elseif(preg_match('/Netscape/i',$u_agent)) {
                   $bname = 'Netscape';
                   $ub = "Netscape";
                }
                
                // finally get the correct version number
                $known = array('Version', $ub, 'other');
                $pattern = '#(?<browser>' . join('|', $known) . ')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
                
                if (!preg_match_all($pattern, $u_agent, $matches)) {
                   // we have no matching number just continue
                }
                
                // see how many we have
                $i = count($matches['browser']);
                
                if ($i != 1) {
                   //we will have two since we are not using 'other' argument yet
                   
                   //see if version is before or after the name
                   if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
                      $version= $matches['version'][0];
                   }else {
                      $version= $matches['version'][1];
                   }
                }else {
                   $version= $matches['version'][0];
                }
                
                // check if we have a number
                if ($version == null || $version == "") {$version = "?";}
                return array(
                   'userAgent' => $u_agent,
                   'name'      => $bname,
                   'version'   => $version,
                   'platform'  => $platform,
                   'pattern'   => $pattern
                );
             }
             
             // now try it
             $ua = getBrowser();
             $yourbrowser = "Your browser: " . $ua['name'] . " " . $ua['version'] .
                " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];
             
             print_r($yourbrowser);
          ?>
       
       </body>
    </html>

    The result is this

    Your browser: Mozilla Firefox 43.0 on linux reports:
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: