dongyange1101 2015-09-04 13:34
浏览 108
已采纳

PHP只检查操作系统

I'm using the follow php code to display operating system version:

<?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']."");

  ?>

which give me the following result:

Browser: Unknown Browser Operating System: Unknown OS Platform

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

I'm running Windows 10 and it doesnt appear to work.

All I want to display is the following:

This PC is running Windows 10

is that possible?

  • 写回答

3条回答 默认 最新

  • douzhang7184 2015-09-04 13:39
    关注

    Your $os_array doesn't have any data for Windows 10 (which I'm assuming can be mapped to Windows NT 10.0.

    So, simply change $os_array to:

    $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'
                    );
    

    Alternative solution

    This is pretty much the same code as yours - just providing an alternative but there's really no reason why this would work but the previous didn't.

    <?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']."");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装