Самый простой способ обнаружения ОС с помощью PHP? - PullRequest
8 голосов
/ 05 ноября 2010

Я пытаюсь выяснить, является ли ОС посетителя Windows, Mac или Linux, использующей PHP (мне не нужна версия, информация о дистрибутиве и т. Д.). Есть несколько методов, но они выглядят слишком сложными для этого простого требования.

Есть ли какие-нибудь простые способы, которые могли бы предоставить такую ​​информацию, но при этом быть достаточно надежными?

Заранее спасибо.

Ответы [ 3 ]

23 голосов
/ 05 ноября 2010
<?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 голосов
/ 05 ноября 2010

Для простого решения посмотрите здесь .Заголовок user-agent может раскрыть некоторую информацию об ОС, но я бы на это не рассчитывал.

В вашем случае я бы сделал вызов ajax, используя javascript со стороны клиента, чтобы проинформировать ваш сервер об ОС клиента.,И сделайте его водонепроницаемым.

Вот пример.

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 голосов
/ 05 ноября 2010

использовать пакет Net_UserAgent

Документ находится здесь: http://pear.php.net/package/Net_UserAgent_Detect/docs/latest/Net_UserAgent/Net_UserAgent_Detect.html#methodgetOSString

получите файл php здесь: пакет / Net_UserAgent_Detect / документы / последние / __ filesource / fsource_Net_UserAgent__Net_UserAgent_Detect-2.5.1Detect.php.html

...