Я пытаюсь понять, что ОС посетителя – это Windows, Mac или Linux с использованием PHP (мне не нужна версия, информация о дистрибутивах и т. Д.). Существует несколько методов, однако они выглядят слишком сложно для этого простого требования.
Существуют ли какие-либо простые способы, которые могли бы предоставить такую информацию, но все же быть достаточно надежными?
Заранее спасибо.
Для легкого решения посмотрите здесь . Заголовок 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 }
<?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; ?>
использовать пакет Net_UserAgent
document находится здесь: 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