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条)

报告相同问题?

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据