簡體   English   中英

PHP 僅檢查操作系統

[英]PHP to check Operating System ONLY

我正在使用以下 php 代碼來顯示操作系統版本:

<?php

 $user_agent     =   $_SERVER['HTTP_USER_AGENT'];

 function getOS() { 

global $user_agent;

$os_platform    =   "Unknown OS Platform";

$os_array       =   array(
                        '/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' =>  'Mac OS X',
                        '/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'
                    );

     foreach ($os_array as $regex => $value) { 

    if (preg_match($regex, $user_agent)) {
        $os_platform    =   $value;
    }

    }   

      return $os_platform;

       }

 function getBrowser() {

global $user_agent;

$browser        =   "Unknown Browser";

$browser_array  =   array(
                        '/msie/i'       =>  'Internet Explorer',
                        '/firefox/i'    =>  'Firefox',
                        '/safari/i'     =>  'Safari',
                        '/chrome/i'     =>  'Chrome',
                        '/opera/i'      =>  'Opera',
                        '/netscape/i'   =>  'Netscape',
                        '/maxthon/i'    =>  'Maxthon',
                        '/konqueror/i'  =>  'Konqueror',
                        '/mobile/i'     =>  'Handheld Browser'
                    );

   foreach ($browser_array as $regex => $value) { 

    if (preg_match($regex, $user_agent)) {
        $browser    =   $value;
    }

}

 return $browser;

  }


 $user_os        =   getOS();
 $user_browser   =   getBrowser();

  $device_details =   "<strong>Browser: </strong>".$user_browser."<br />                <strong>Operating System: </strong>".$user_os."";

 print_r($device_details);

echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT']."");

  ?>

這給了我以下結果:

瀏覽器:未知瀏覽器操作系統:未知操作系統平台

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36

我正在運行 Windows 10,但它似乎不起作用。

我只想顯示以下內容:

這台電腦運行的是 Windows 10

那可能嗎?

您的$os_array沒有 Windows 10 的任何數據(我假設它可以映射到 Windows NT 10.0.0.1)。

因此,只需將$os_array更改為:

$os_array       =   array(
                    '/windows nt 10.0/i'    =>  'Windows 10',
                    '/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' =>  'Mac OS X',
                    '/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'
                );

替代方案

這與您的代碼幾乎相同 - 只是提供了一個替代方案,但實際上沒有理由為什么這會起作用,而前一個卻沒有。

<?php

function getOS($userAgent) {

$osPlatform    =   "Unknown OS Platform";

$os_array       =   array(
    'windows nt 10.0'    => 'Windows 10',
    'windows nt 6.2'     =>  'Windows 8',
    'windows nt 6.1'     =>  'Windows 7',
    'windows nt 6.0'     =>  'Windows Vista',
    'windows nt 5.2'     =>  'Windows Server 2003/XP x64',
    'windows nt 5.1'     =>  'Windows XP',
    'windows xp'         =>  'Windows XP',
    'windows nt 5.0'     =>  'Windows 2000',
    'windows me'         =>  'Windows ME',
    'win98'              =>  'Windows 98',
    'win95'              =>  'Windows 95',
    'win16'              =>  'Windows 3.11',
    'macintosh|mac os x' =>  'Mac OS X',
    'mac_powerpc'        =>  'Mac OS 9',
    'linux'              =>  'Linux',
    'ubuntu'             =>  'Ubuntu',
    'phone'             =>  'iPhone',
    'pod'               =>  'iPod',
    'pad'               =>  'iPad',
    'android'            =>  'Android',
    'blackberry'         =>  'BlackBerry',
    'webos'              =>  'Mobile'
);

foreach ($os_array as $label => $value) {
    if (stripos($userAgent, $label)) {
        return $value;
    }
}

return $osPlatform;

}

function getBrowser($userAgent) {

$browser        =   "Unknown Browser";

$browser_array  =   array(
    'msie'       =>  'Internet Explorer',
    'firefox'    =>  'Firefox',
    'safari'     =>  'Safari',
    'chrome'     =>  'Chrome',
    'opera'      =>  'Opera',
    'netscape'   =>  'Netscape',
    'maxthon'    =>  'Maxthon',
    'konqueror'  =>  'Konqueror',
    'mobile'     =>  'Handheld Browser'
);

foreach ($browser_array as $label => $value) {
    if (stripos($userAgent, $label)) {
        return $value;
    }
}

return $browser;

}

$userAgent     =   $_SERVER['HTTP_USER_AGENT'];
//$userAgent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36      (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36';


$user_os        =   getOS($userAgent);
$user_browser   =   getBrowser($userAgent);

$device_details =   "<strong>Browser: </strong>".$user_browser."<br />                    <strong>Operating System: </strong>".$user_os."";

print_r($device_details);

//echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT']."");

只需在您的陣列中添加 Windows 10:

$os_array = array(
    '/windows nt 10.0/i'    =>  'Windows 10',
    '/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' =>  'Mac OS X',
    '/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'
);

看到這個小提琴 ideone 沒有回應任何用戶代理,所以我不得不硬編碼一個,但如果你的用戶代理存在,這應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM