Самый простой способ обнаружения ОС с помощью PHP?

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

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

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


person user435216    schedule 05.11.2010    source источник
comment
stackoverflow.com/questions/228256 /   -  person user187291    schedule 05.11.2010
comment
возможный дубликат Получить информацию об операционной системе с помощью PHP   -  person T.Todua    schedule 27.11.2014


Ответы (2)


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

Для вашего варианта использования я бы сделал вызов 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
} 
person Thariama    schedule 05.11.2010
comment
Кажется надежным. Однако я предполагаю, что обнаружение происходит только после загрузки страницы? - person user435216; 05.11.2010
comment
Без загрузки страницы вы не сможете получить больше, чем показывает заголовок пользовательского агента. Что ж, вы можете сохранить ОС пользователей при инициализации сеанса (при загрузке первой страницы), обходным путем может быть перенаправление на вторую страницу после того, как вы обнаружили ОС на первой странице. - person Thariama; 05.11.2010

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

документ находится здесь: 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

person rémy    schedule 05.11.2010