簡體   English   中英

使用PHP輕松實現OS檢測?

[英]Easiest Way OS Detection With PHP?

我試圖弄清楚訪問者的操作系統是使用PHP的Windows,Mac還是Linux(我不需要版本,發行版信息等等)。 有幾種方法,但是對於這個簡單的要求它們看起來有點過於復雜。

有沒有簡單的方法可以提供這種信息但仍然非常可靠?

提前致謝。

<?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;

?>

如需簡單的解決方案,請查看此處 用戶代理標頭可能會顯示一些操作系統信息,但我不會指望它。

對於您的用例,我將使用客戶端的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
} 

使用Net_UserAgent包

docu在這里: http//pear.php.net/package/Net_UserAgent_Detect/docs/latest/Net_UserAgent/Net_UserAgent_Detect.html#methodgetOSString

獲取php文件:package / Net_UserAgent_Detect / docs / latest / __ filesource / fsource_Net_UserAgent__Net_UserAgent_Detect-2.5.1Detect.php.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM