9

私はこれのために、Google をオン/オフして 1 日を過ごしました。これまでのところ運がありません。

ユーザーの OS とバージョンを取得するにはどうすればよいですか。私の場合は Mac OS X 10.6.4、オフィスの予備の PC は Windows XP SP3 です。あなたは私が何を得ているかを見ます。

バージョンだけでなく、ユーザー プラットフォームだけを取得する方法を 100 万と 1 つ見てきました。

JS が理想的ですが、サーバー側 (PHP) ソリューションも問題ありません。

4

5 に答える 5

25
<?php

$user_agent     =   $_SERVER['HTTP_USER_AGENT'];

function getOS() { 

global $user_agent;

$os_platform    =   "Unknown OS Platform";

$os_array       =   array(
    '/windows nt 10.0/i'    =>  'Windows 10',
    '/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']."");

?>
于 2013-03-19T11:12:02.533 に答える
5

$_SERVER 配列の HTTP_USER_AGENT フィールドを使用できます。たとえば、次のコードは 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」関数で定義される定数であることに注意してください。

于 2011-12-09T07:36:10.670 に答える
2

http://php.net/manual/en/function.get-browser.phpでget_browser関数を確認してください

于 2010-08-09T17:05:44.027 に答える
1

とにかく信頼性があまり高くないネットワークプローブを実行する以外に、あなたが持っている唯一のヒントは、User-Agentヘッダーを調べることですが、誰もがデフォルトのヘッダーを変更できるため、あまり信頼することはできません。ブラウザが送信します。

于 2010-08-09T16:11:17.580 に答える
1

表示されるすべてのサーバー側のソリューションは、実際にはリクエストで User-Agent 文字列を使用することに要約されます。

クライアント側 (JS) で作業を行うことには、ブラウザー/OS と直接対話できるという利点があります。たとえば、jQuery のブラウザー機能(まさに必要なものかもしれません) は、DOM/ブラウザーで一連のテストを実行して、それがどのように反応するかを確認し、それらの反応に基づいてブラウザーの種類とバージョンを決定します。jQuery のブラウザー機能を拡張して OS 検出を組み込むプロジェクトがいくつかありましたが、私はそれらを使用したことがありません。簡単な Google 検索で簡単に見つかります。

乾杯。

于 2010-08-09T16:09:52.600 に答える