<?php
function getBrowserInfo() {
    $finalInfo = array();
    $uach = getUACHInfo();
    $userAgent = getUserAgentInfo();
    if($uach['os'] == "Unknown OS Platform") {
        $finalInfo['os'] = $userAgent['os'];
    }
    else {
        $finalInfo['os'] = $uach['os'];
    }
    
    if($uach['device'] == $userAgent['device']) {
        $finalInfo['device'] = $uach['device'];
    }
    else {
        $finalInfo['device'] = $userAgent['device'];
    }
    
    if($uach['browser'] == "Unknown Browser") {
        $finalInfo['browser'] = $userAgent['browser'];
    }
    else {
        $finalInfo['browser'] = $uach['browser'];
    }
    return $finalInfo;
}
function getUserAgentInfo() {
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    $os_platform    = "Unknown OS Platform";
    $os_array       = array('/windows phone 8/i'    =>  'Windows Phone 8',
                            '/windows phone os 7/i' =>  'Windows Phone 7',
                            '/windows nt 10.0/i'    =>  'Windows 10',
                            '/windows nt 6.3/i'     =>  'Windows 8.1',
                            '/windows nt 6.2/i'     =>  'Windows 8',
                            '/windows nt 6.1/i'     =>  'Windows 7',
                            '/windows nt 6.0/i'     =>  'Windows Vista',
                            '/windows nt 5.2/i'     =>  'Windows Server 2003/XP x64',
                            '/windows nt 5.1/i'     =>  'Windows XP',
                            '/windows xp/i'         =>  'Windows XP',
                            '/windows nt 5.0/i'     =>  'Windows 2000',
                            '/windows me/i'         =>  'Windows ME',
                            '/win98/i'              =>  'Windows 98',
                            '/win95/i'              =>  'Windows 95',
                            '/win16/i'              =>  'Windows 3.11',
                            '/macintosh|mac os x/i' =>  'macOS',
                            '/mac_powerpc/i'        =>  'Mac OS 9',
                            '/linux/i'              =>  'Linux',
                            '/ubuntu/i'             =>  'Ubuntu',
                            '/iphone/i'             =>  'iPhone',
                            '/ipod/i'               =>  'iPod',
                            '/ipad/i'               =>  'iPad',
                            '/android/i'            =>  'Android',
                            '/blackberry/i'         =>  'BlackBerry',
                            '/webos/i'              =>  'Mobile');
    $device = '';
    foreach ($os_array as $regex => $value) 
    { 
        if (preg_match($regex, $user_agent)) 
        {
            $os_platform    =   $value;
            $device = !preg_match('/(windows|mac|linux|ubuntu)/i',$os_platform)
                      ?'celular':(preg_match('/phone/i', $os_platform)?'celular':'desktop');
        }
    }
    $device = !$device? 'desktop':$device;
    
    $browser        =   "Unknown Browser";
    $browser_array  = array('/msie/i'       =>  'Internet Explorer',
                            '/firefox/i'    =>  'Firefox',
                            '/safari/i'     =>  'Safari',
                            '/chrome/i'     =>  'Google Chrome',
                            '/opera/i'      =>  'Opera',
                            '/netscape/i'   =>  'Netscape',
                            '/maxthon/i'    =>  'Maxthon',
                            '/konqueror/i'  =>  'Konqueror',
                            '/Edg?/i'       =>  'Microsoft Edge',
                            '/mobile/i'     =>  'Handheld Browser');
    
    foreach ($browser_array as $regex => $value) 
    { 
        if (preg_match($regex, $user_agent,$result)) 
        {
            $browser = $value;
        }
    }
    
    return array('os'=>$os_platform, 'browser'=>$browser, 'device'=>$device);
}
function getUACHInfo() {
    if(isset($_SERVER['HTTP_SEC_CH_UA'])) {
        $browser_array  = array(
                            '/firefox/i'        =>  'Firefox',
                            '/Google Chrome/i'  =>  'Google Chrome',
                            '/Opera/i'          =>  'Opera',
                            '/Microsoft Edge/i' =>  'Microsoft Edge',
                            '/Safari/i'         =>  'Safari',
                            '/konqueror/i'      =>  'Konqueror');
        
        foreach ($browser_array as $regex => $value) 
        { 
            if (preg_match($regex, $_SERVER['HTTP_SEC_CH_UA'],$result)) 
            {
                $browser = $value;
            }
        }
        
    }
    else {
        $browser = "Unknown Browser";
    }
    
    if(isset($_SERVER['HTTP_SEC_CH_UA_MOBILE'])) {
        $device = $_SERVER['HTTP_SEC_CH_UA_MOBILE']=="?1"?"celular":"desktop";
    }
    else {
        $device = "desktop";
    }
    
    if(isset($_SERVER['HTTP_SEC_CH_UA_PLATFORM'])) {
        $os_platform =  $_SERVER['HTTP_SEC_CH_UA_PLATFORM'];
        $os_platform = str_replace('"', '', $os_platform);
    }
    else {
        $os_platform = "Unknown OS Platform";
    }
    
    return array('os'=>$os_platform, 'browser'=>$browser, 'device'=>$device);
}
?>