使用 PHP 进行操作系统检测的最简单方法?

问题描述 投票:0回答:4

我试图确定访问者的操作系统是 Windows、Mac 还是使用 PHP 的 Linux(我不需要版本、发行版信息等)。有几种方法,但是对于这个简单的要求来说,它们看起来有点太复杂了。

是否有任何简单的方法可以提供此类信息,但仍然相当可靠?

提前致谢。

php user-agent
4个回答
26
投票
<?php

$agent = $_SERVER['HTTP_USER_AGENT'];

if(preg_match('/Linux/',$agent)) $os = 'Linux';
elseif(preg_match('/Win/',$agent)) $os = 'Windows';
elseif(preg_match('/Mac/',$agent)) $os = 'Mac';
else $os = 'UnKnown';


echo $os;

?>

6
投票

要了解简单的解决方案,请查看此处。 用户代理标头可能会泄露一些操作系统信息,但我不会指望这一点。

对于您的用例,我将使用客户端的 javascript 进行 ajax 调用,以通知您的服务器客户端的操作系统。并且要做到防水。

这是一个例子。

Javascript(客户端、浏览器检测+ajax调用):

window.addEvent('domready', function() { 
  if (BrowserDetect) { 
    var q_data = 'ajax=true&browser=' + BrowserDetect.browser + '&version=' + BrowserDetect.version + '&os=' + BrowserDetect.OS; 
    var query = 'record_browser.php' 
    var req = new Request.JSON({url: query, onComplete: setSelectWithJSON, data: q_data}).post(); 
  } 
}); 

PHP(服务器端):

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $session = session_id(); 
    $user_id = isset($user_id) ? $user_id : 0; 
    $browser = isset($_POST['browser']) ? $_POST['browser'] : ''; 
    $version = isset($_POST['version']) ? $_POST['version'] : ''; 
    $os = isset($_POST['os']) ? $_POST['os'] : ''; 

    // now do here whatever you like with this information
} 

0
投票

使用 Net_UserAgent 包

文档在这里:http://pear.php.net/package/Net_UserAgent_Detect/docs/latest/Net_UserAgent/Net_UserAgent_Detect.html#methodgetOSString

在此处获取 php 文件: 包/Net_UserAgent_Detect/docs/latest/__filesource/fsource_Net_UserAgent__Net_UserAgent_Detect-2.5.1Detect.php.html


0
投票

这就是您需要的!

$user_agent = getenv("HTTP_USER_AGENT");

if(strpos($user_agent, "Windows") !== false) { echo "Windows!"; }
© www.soinside.com 2019 - 2024. All rights reserved.