Я потратил целый день на это и за его пределами. пока не повезло.
Как я могу получить ОС и версию для пользователей. Мой бы мне Mac OS X 10.6.4, запасной компьютер в офисе был бы Windows XP SP3. Вы видите, что я получаю.
Я видел миллион и один метод, чтобы получить платформу пользователей в одиночку, а не версию.
JS был бы идеальным, но решение на стороне сервера (PHP) тоже в порядке.
<?php $user_agent = $_SERVER['HTTP_USER_AGENT']; function getOS() { global $user_agent; $os_platform = "Unknown OS Platform"; $os_array = array( '/windows nt 6.2/i' => 'Windows 8', '/windows nt 6.1/i' => 'Windows 7', '/windows nt 6.0/i' => 'Windows Vista', '/windows nt 5.2/i' => 'Windows Server 2003/XP x64', '/windows nt 5.1/i' => 'Windows XP', '/windows xp/i' => 'Windows XP', '/windows nt 5.0/i' => 'Windows 2000', '/windows me/i' => 'Windows ME', '/win98/i' => 'Windows 98', '/win95/i' => 'Windows 95', '/win16/i' => 'Windows 3.11', '/macintosh|mac os x/i' => 'Mac OS X', '/mac_powerpc/i' => 'Mac OS 9', '/linux/i' => 'Linux', '/ubuntu/i' => 'Ubuntu', '/iphone/i' => 'iPhone', '/ipod/i' => 'iPod', '/ipad/i' => 'iPad', '/android/i' => 'Android', '/blackberry/i' => 'BlackBerry', '/webos/i' => 'Mobile' ); foreach ($os_array as $regex => $value) { if (preg_match($regex, $user_agent)) { $os_platform = $value; } } return $os_platform; } function getBrowser() { global $user_agent; $browser = "Unknown Browser"; $browser_array = array( '/msie/i' => 'Internet Explorer', '/firefox/i' => 'Firefox', '/safari/i' => 'Safari', '/chrome/i' => 'Chrome', '/opera/i' => 'Opera', '/netscape/i' => 'Netscape', '/maxthon/i' => 'Maxthon', '/konqueror/i' => 'Konqueror', '/mobile/i' => 'Handheld Browser' ); foreach ($browser_array as $regex => $value) { if (preg_match($regex, $user_agent)) { $browser = $value; } } return $browser; } $user_os = getOS(); $user_browser = getBrowser(); $device_details = "<strong>Browser: </strong>".$user_browser."<br /><strong>Operating System: </strong>".$user_os.""; print_r($device_details); echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT'].""); ?>
Поле HTTP_USER_AGENT можно использовать в массиве $ _SERVER. Например, следующий код будет определять пользователей iPhone и Android и перенаправлять их в другое место (например, в iTunes App Store или Android Marketplace):
$http_user_agent = $_SERVER['HTTP_USER_AGENT']; if (stristr($http_user_agent, "android") != FALSE) { header("Location: " . ANDROID_REDIRECT); } else if (stristr($http_user_agent, "iphone") != FALSE) { header("Location: " . IOS_REDIRECT); } else { header("Location: " . DEFAULT_REDIRECT); }
Обратите внимание, что ANDROID_REDIRECT, IOS_REDIRECT и DEFAULT_REDIRECT являются константами, определенными с помощью функции PHP define .
В приведенной ниже ссылке есть код javascript для обнаружения ОС – внизу. В качестве бонуса он имеет несколько других функций, таких как тип браузера и определение версии.
http://www.quirksmode.org/js/detect.html
НТН
проверьте функцию get_browse r в http://php.net/manual/en/function.get-browser.php
Все серверные решения, которые вы увидите, действительно сводятся к использованию строки User-Agent в запросе.
Выполнение работы на стороне клиента (JS) дает возможность напрямую взаимодействовать с браузером / ОС. Например, функция браузера jQuery, которая может быть именно то, что вам нужна, запускает серию тестов на DOM / browser, чтобы увидеть, как она реагирует, а затем определяет тип и версию браузера на основе этих реакций. Были некоторые проекты для расширения функции браузера jQuery для включения обнаружения ОС, но я не использовал их раньше; легко найти с быстрым поиском Google.
Приветствия.
единственный намек, который у вас есть, кроме создания сетевого зонда, который в тоже время не слишком надежный, – это изучить заголовок User-Agent, но вы не можете слишком полагаться на него, так как каждый может изменять заголовки по умолчанию, браузер отправляет.