我试图弄清楚访问者的操作系统是使用PHP的Windows,Mac还是Linux(我不需要版本,发行版信息等等)。有几种方法,但是对于这个简单的要求它们看起来有点过于复杂。
是否有任何简单的方法可以提供此类信息但仍然非常可靠?
提前致谢。
答案 0 :(得分:23)
<?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;
?>
答案 1 :(得分:6)
如需简单的解决方案,请查看here。 用户代理标头可能会显示一些操作系统信息,但我不会指望它。
对于您的用例,我将使用客户端的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
}
答案 2 :(得分:0)
使用Net_UserAgent包
在这里获取php文件: 包/ Net_UserAgent_Detect /文档/最新/ __ filesource / fsource_Net_UserAgent__Net_UserAgent_Detect-2.5.1Detect.php.html