【问题标题】:How we can distinguish between this Windows version 2008/XP/7/2003 with PHP我们如何区分这个 Windows 版本 2008/XP/7/2003 和 PHP
【发布时间】:2023-12-13 18:23:01
【问题描述】:

据我们所知..通过简单的 php 代码很容易检测访问者的操作系统和版本

function getOS($userAgent) {
  // Create list of operating systems with operating system name as array key
 $oses = array (
  'iPhone' => '(iPhone)',
  'iPad' => 'iPad',
  'Android' => 'Android',
  'Windows 3.11' => 'Win16',
  'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', // Use regular expressions as value to identify operating system
  'Windows 98' => '(Windows 98)|(Win98)',
  'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)',
  'Windows XP' => '(Windows NT 5.1)|(Windows XP)',
  'Windows Server 2003' => '(Windows NT 5.2)',
  'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)',
  'Windows 7' => '(Windows NT 6.1)|(Windows 7)',
  'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
  'Windows ME' => 'Windows ME',
  'Open BSD'=>'OpenBSD',
  'Sun OS'=>'SunOS',
  'Linux'=>'(Linux)|(X11)',
  'Safari' => '(Safari)',
  'Macintosh'=>'(Mac_PowerPC)|(Macintosh)',
  'QNX'=>'QNX',
  'BeOS'=>'BeOS',
  'OS/2'=>'OS/2',
  'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp/cat)|(msnbot)|(ia_archiver)'
 );

 foreach($oses as $os=>$pattern){ // Loop through $oses array
    // Use regular expressions to check operating system type
  if(eregi($pattern, $userAgent)) { // Check if a value in $oses array matches current user agent.
   return $os; // Operating system was matched so return $oses key
  }
 }
 return 'Unknown'; // Cannot find operating system so return Unknown
}

但是有一个问题,有些窗口有相同的 NT 版本:

Windows 服务器 2008/Windows Vista = NT 6.0

Windows 服务器 2008 R2/Windows7 = NT 6.1

Windows XP 64 位版/Windows Server 2003/Windows XP Professional x64 版/Windows Server 2003 R2 = NT 5.2

你可以在这里看到http://en.wikipedia.org/wiki/Windows_NT

我们如何区分这个Windows版本和php?!

【问题讨论】:

    标签: php windows windows-7 user-agent


    【解决方案1】:

    实际上有很简单的方法可以做到这一点。它涉及get_browser函数和browscap.ini。你可以写:

    $browser = get_browser(user_agent...);
    echo $browser->platform;
    

    别忘了在其页面上查看有关此功能的说明。

    【讨论】:

    • 谢谢 Ondrej Slintak。实际上他们在 windows server 2003/2008 上也有同样的问题。检查这个browsers.garykeith.com/news-archives
    • 哎呀,我不知道。
    • 没关系...谢谢你的帮助:)
    • 好吧,你真的认为你会有很多来自 windows server 2003 和 2008 的访问者吗?重要的是吗?
    • 我认为这是不可能找到的:(
    最近更新 更多