下面的代码可以用它自己的方式来解释http://thismachine.info/能够显示某人正在使用的操作系统。

它所做的就是,它嗅探了您的核心操作系统模型,例如windows nt 5.1作为我自己。

然后将WindowsNT5.1/i作为操作系统传递给WindowsXP。

使用:'/windows nt 5.1/i' => 'Windows XP',从一个数组。

你可以说,猜测,或近似,但仍然很有可能。<?php

$user_agent = $_SERVER['HTTP_USER_AGENT'];function getOS() {

global $user_agent;

$os_platform  = "Unknown OS Platform";

$os_array     = array(

'/windows nt 10/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' =>  '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',

'/edge/i'      => 'Edge',

'/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 = "Browser: ".

$user_browser."Operating System: ".

$user_os."";print_r($device_details);echo("
".

$_SERVER['HTTP_USER_AGENT']."");?>

脚注:有一个建议编辑2014年1月18日/msie|trident/i通过YJSoft一个新成员。

评论内容如下:

评论:因为msie 11的UA不包括msie(它包含三叉戟)。

我对此进行了一些研究,并发现了一些解释三叉戟字符串的链接。

虽然编辑是拒绝(不是我自己,而是其他一些编辑),值得一读上面的链接,并使用你的正确判断。

根据关于检测SUSE的问题,在以下URL中找到了这段代码:

附加代码:/* return Operating System */function operating_system_detection(){

if ( isset( $_SERVER ) ) {

$agent = $_SERVER['HTTP_USER_AGENT'];

}

else {

global $HTTP_SERVER_VARS;

if ( isset( $HTTP_SERVER_VARS ) ) {

$agent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];

}

else {

global $HTTP_USER_AGENT;

$agent = $HTTP_USER_AGENT;

}

}

$ros[] = array('Windows XP', 'Windows XP');

$ros[] = array('Windows NT 5.1|Windows NT5.1)', 'Windows XP');

$ros[] = array('Windows 2000', 'Windows 2000');

$ros[] = array('Windows NT 5.0', 'Windows 2000');

$ros[] = array('Windows NT 4.0|WinNT4.0', 'Windows NT');

$ros[] = array('Windows NT 5.2', 'Windows Server 2003');

$ros[] = array('Windows NT 6.0', 'Windows Vista');

$ros[] = array('Windows NT 7.0', 'Windows 7');

$ros[] = array('Windows CE', 'Windows CE');

$ros[] = array('(media center pc).([0-9]{1,2}\.[0-9]{1,2})', 'Windows Media Center');

$ros[] = array('(win)([0-9]{1,2}\.[0-9x]{1,2})', 'Windows');

$ros[] = array('(win)([0-9]{2})', 'Windows');

$ros[] = array('(windows)([0-9x]{2})', 'Windows');

// Doesn't seem like these are necessary...not totally sure though..

//$ros[] = array('(winnt)([0-9]{1,2}\.[0-9]{1,2}){0,1}', 'Windows NT');

//$ros[] = array('(windows nt)(([0-9]{1,2}\.[0-9]{1,2}){0,1})', 'Windows NT'); // fix by bg

$ros[] = array('Windows ME', 'Windows ME');

$ros[] = array('Win 9x 4.90', 'Windows ME');

$ros[] = array('Windows 98|Win98', 'Windows 98');

$ros[] = array('Windows 95', 'Windows 95');

$ros[] = array('(windows)([0-9]{1,2}\.[0-9]{1,2})', 'Windows');

$ros[] = array('win32', 'Windows');

$ros[] = array('(java)([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2})', 'Java');

$ros[] = array('(Solaris)([0-9]{1,2}\.[0-9x]{1,2}){0,1}', 'Solaris');

$ros[] = array('dos x86', 'DOS');

$ros[] = array('unix', 'Unix');

$ros[] = array('Mac OS X', 'Mac OS X');

$ros[] = array('Mac_PowerPC', 'Macintosh PowerPC');

$ros[] = array('(mac|Macintosh)', 'Mac OS');

$ros[] = array('(sunos)([0-9]{1,2}\.[0-9]{1,2}){0,1}', 'SunOS');

$ros[] = array('(beos)([0-9]{1,2}\.[0-9]{1,2}){0,1}', 'BeOS');

$ros[] = array('(risc os)([0-9]{1,2}\.[0-9]{1,2})', 'RISC OS');

$ros[] = array('os/2', 'OS/2');

$ros[] = array('freebsd', 'FreeBSD');

$ros[] = array('openbsd', 'OpenBSD');

$ros[] = array('netbsd', 'NetBSD');

$ros[] = array('irix', 'IRIX');

$ros[] = array('plan9', 'Plan9');

$ros[] = array('osf', 'OSF');

$ros[] = array('aix', 'AIX');

$ros[] = array('GNU Hurd', 'GNU Hurd');

$ros[] = array('(fedora)', 'Linux - Fedora');

$ros[] = array('(kubuntu)', 'Linux - Kubuntu');

$ros[] = array('(ubuntu)', 'Linux - Ubuntu');

$ros[] = array('(debian)', 'Linux - Debian');

$ros[] = array('(CentOS)', 'Linux - CentOS');

$ros[] = array('(Mandriva).([0-9]{1,3}(\.[0-9]{1,3})?(\.[0-9]{1,3})?)', 'Linux - Mandriva');

$ros[] = array('(SUSE).([0-9]{1,3}(\.[0-9]{1,3})?(\.[0-9]{1,3})?)', 'Linux - SUSE');

$ros[] = array('(Dropline)', 'Linux - Slackware (Dropline GNOME)');

$ros[] = array('(ASPLinux)', 'Linux - ASPLinux');

$ros[] = array('(Red Hat)', 'Linux - Red Hat');

// Loads of Linux machines will be detected as unix.

// Actually, all of the linux machines I've checked have the 'X11' in the User Agent.

//$ros[] = array('X11', 'Unix');

$ros[] = array('(linux)', 'Linux');

$ros[] = array('(amigaos)([0-9]{1,2}\.[0-9]{1,2})', 'AmigaOS');

$ros[] = array('amiga-aweb', 'AmigaOS');

$ros[] = array('amiga', 'Amiga');

$ros[] = array('AvantGo', 'PalmOS');

//$ros[] = array('(Linux)([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}(rel\.[0-9]{1,2}){0,1}-([0-9]{1,2}) i([0-9]{1})86){1}', 'Linux');

//$ros[] = array('(Linux)([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}(rel\.[0-9]{1,2}){0,1} i([0-9]{1}86)){1}', 'Linux');

//$ros[] = array('(Linux)([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3}(rel\.[0-9]{1,2}){0,1})', 'Linux');

$ros[] = array('[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,3})', 'Linux');

$ros[] = array('(webtv)/([0-9]{1,2}\.[0-9]{1,2})', 'WebTV');

$ros[] = array('Dreamcast', 'Dreamcast OS');

$ros[] = array('GetRight', 'Windows');

$ros[] = array('go!zilla', 'Windows');

$ros[] = array('gozilla', 'Windows');

$ros[] = array('gulliver', 'Windows');

$ros[] = array('ia archiver', 'Windows');

$ros[] = array('NetPositive', 'Windows');

$ros[] = array('mass downloader', 'Windows');

$ros[] = array('microsoft', 'Windows');

$ros[] = array('offline explorer', 'Windows');

$ros[] = array('teleport', 'Windows');

$ros[] = array('web downloader', 'Windows');

$ros[] = array('webcapture', 'Windows');

$ros[] = array('webcollage', 'Windows');

$ros[] = array('webcopier', 'Windows');

$ros[] = array('webstripper', 'Windows');

$ros[] = array('webzip', 'Windows');

$ros[] = array('wget', 'Windows');

$ros[] = array('Java', 'Unknown');

$ros[] = array('flashget', 'Windows');

// delete next line if the script show not the right OS

//$ros[] = array('(PHP)/([0-9]{1,2}.[0-9]{1,2})', 'PHP');

$ros[] = array('MS FrontPage', 'Windows');

$ros[] = array('(msproxy)/([0-9]{1,2}.[0-9]{1,2})', 'Windows');

$ros[] = array('(msie)([0-9]{1,2}.[0-9]{1,2})', 'Windows');

$ros[] = array('libwww-perl', 'Unix');

$ros[] = array('UP.Browser', 'Windows CE');

$ros[] = array('NetAnts', 'Windows');

$file = count ( $ros );

$os = '';

for ( $n=0 ; $n

if ( preg_match('/'.$ros[$n][0].'/i' , $agent, $name)){

$os = @$ros[$n][1].' '.@$name[2];

break;

}

}

return trim ( $os );}

我昨天注意到了一个问题,这个问题可能与这个问答有关,可能会对一些人有所帮助。在以下方面:

Mozilla/5.0 (Linux; Android 4.4.2; SAMSUNG-GT-I9505 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36

另一个编辑,并添加了一个可能有用的参考链接(并于今天(11月4日/16日)回答/接受)。

请参阅Stack上的问答:

php无法获取操作系统信息,如何获取操作系统信息相关推荐

  1. android java file 清理垃圾获取文件大小 删除文件等操作

    这么久没有写博客了,今天给大家分享一些多file文件的操作.一般可以用到清理垃圾获取文件大小 删除文件等操作,可以直接用于工具类里面,直接做操作便可以 public final class FileU ...

  2. c 获取当前时间插入oracle数据库,Oracle如何获取系统当前时间等操作实例,c++获取系统时间...

    Oracle如何获取系统当前时间等操作实例,c++获取系统时间 获取系统当前时间 date类型的 select sysdate from dual; char类型的 select to_char(sy ...

  3. 【Windows 逆向】OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址的数据 )

    文章目录 一.CE 中获取子弹动态地址前置操作 二.OD 中调试子弹数据 一.CE 中获取子弹动态地址前置操作 在上一篇博客 [Windows 逆向]OD 调试器工具 ( CE 工具通过查找访问的方式 ...

  4. android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)

    这里总结下android中关于手机屏幕的相关操作: 1.获取屏幕的分辨率(因为android中处理显示的时候,需要根据屏幕分辨率的不同才去不同的布局或显示不同的素材) <uses-sdk and ...

  5. Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据

    概述 如何获取本地数据连接 示例从DBCP数据源中获取Oracle的本地连接对象 相关接口操作 LobCreator LobHandler 插入LOB类型的数据 以块数据的方式读取LOB数据 以流数据 ...

  6. python操作手机app_【Python】[技术博客] 一些使用Python编写获取手机App日志的操作...

    一些使用Python编写获取手机App日志的操作 如何获取手机当前打开的App的包名 如何获取当前App进程的PID 如何查看当前App的日志 如何将日志保存到文件 如何关闭进程 如何不显示命令行窗口 ...

  7. thinkphp5基本的一些操作/API友好/获取请求信息(Request)/判断请求类型(GET...)/验证参数数据(Validate)/连接数据库/原生sql语句查询

    文章目录 一.API友好 1.举两个thinkphp5关于API友好的例子 (1)数据输出 (2)错误调试Trace 二.获取请求信息(Request) 1.获取URL信息 2.获取 模块/控制器/操 ...

  8. Js获取当前日期时间及其它操作(转)

    Js获取当前日期时间及其它操作 var myDate = new Date(); myDate.getYear();        //获取当前年份(2位) myDate.getFullYear(); ...

  9. android 获取文件夹的字节数,android java file 清理垃圾获取文件大小 删除文件等操作...

    这么久没有写博客了,今天给大家分享一些多file文件的操作.一般可以用到清理垃圾获取文件大小 删除文件等操作,可以直接用于工具类里面,直接做操作便可以 public final class FileU ...

  10. python 获取进程池 sleeping_Python 进程操作之进程池--Pool

    进程池和multiprocess.Pool模块 1.进程池 为什么要有进程池?进程池的概念. 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务.那么在成千上万个任务需要 ...

最新文章

  1. Globus toolkit3.0
  2. 精准评论,为何广受娱乐类产品的欢迎?
  3. 根据BAPI_PO_CREATE1创建采购订单
  4. Spring Boot AOP记录用户操作日志
  5. c#事务的使用、示例及注意事项
  6. 结对开发——求最大值
  7. sql去重常用的基本方法
  8. 受 SQLite 多年青睐,C 语言到底好在哪儿? 1
  9. python request返回的响应_Python爬虫库requests获取响应内容、响应状态码、响应头...
  10. .text urlRewrite介绍
  11. 直线插补 圆弧插补 步进电机二维直线插补圆弧插补控制算法 C语言 STM32移植
  12. java实现网页结构分析,网页列表发现
  13. policy服务器未能登陆,开机出现Group Policy Client服务未能登录的解决措施
  14. 4.7 51单片机-DS1302 实时时钟芯片
  15. git pack文件过大
  16. Jeston Nano 2K分辨率解决
  17. R语言之读取Excel及csv数据
  18. 红旗linux和其他版本区别,Ubuntu Linux与红旗Linux系列的差别
  19. “银联在线支付”签约无需任何条件,个人也可以完成签约
  20. html首页问候语,每日一条问候语

热门文章

  1. 少儿编程Scratch学习教程2--官方初学指南
  2. 【微信小程序】个人信息页面/我的页面
  3. 美团3.12笔试题解
  4. Dubbo入门到实战(一)
  5. XILINX FPGA OV5640 摄像头驱动(一)
  6. 住宅园区光纤布线案例
  7. 60 个 Python 小例子
  8. 论文投稿指南——中文核心期刊推荐(电工技术)
  9. js获取字符串的字节长度
  10. Linux中配置RAID磁盘阵列