Werfen Sie einen Blick auf http://ellislab.com/codeigniter/user-guide/libraries/user_agent.html
Per Detect exact OS version from browser Kurze Antwort: Genau das können Sie nicht.
Lange Antwort:
Alles, was Sie haben, ist die Information in der HTTP-User-Agent-Header, der in der Regel die OS Namen und die Version enthält.
Normalerweise senden Browser unter Mac OS und Linux genügend Informationen, um das genaue Betriebssystem zu identifizieren. Zum Beispiel, hier ist mein User-Agent-Header:
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: 1.9.0.7) Gecko/2009030423 Ubuntu/8,10 (unerschrockenen) Firefox/3.0. 7
Sie können sehen, dass ich Ubuntu 8.10 Intrepid Ibex ausführen.
Und hier ist es, was Firefox und Safari 4 Beta Bericht auf meinem MacBook Pro:
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv: 1.9.0.7) Gecko/2009021906 Firefox/3.0.7
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528,16 (KHTML, wie Gecko) Version/4.0 Safari/528,16
Windows- Browser hingegen melden in der Regel nur die Betriebssystemversion und nicht das spezifische Paket (Pro, Geschäft, etc.):
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: xxx) Gecko/20041107 Firefox/xx
// dies wird Ihnen helfen
$uagent = $_SERVER['HTTP_USER_AGENT'] . "<br/>";
function os_info($uagent)
{
// the order of this array is important
global $uagent;
$oses = array(
'Win311' => 'Win16',
'Win95' => '(Windows 95)|(Win95)|(Windows_95)',
'WinME' => '(Windows 98)|(Win 9x 4.90)|(Windows ME)',
'Win98' => '(Windows 98)|(Win98)',
'Win2000' => '(Windows NT 5.0)|(Windows 2000)',
'WinXP' => '(Windows NT 5.1)|(Windows XP)',
'WinServer2003' => '(Windows NT 5.2)',
'WinVista' => '(Windows NT 6.0)',
'Windows 7' => '(Windows NT 6.1)',
'Windows 8' => '(Windows NT 6.2)',
'WinNT' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)',
'OpenBSD' => 'OpenBSD',
'SunOS' => 'SunOS',
'Ubuntu' => 'Ubuntu',
'Android' => 'Android',
'Linux' => '(Linux)|(X11)',
'iPhone' => 'iPhone',
'iPad' => 'iPad',
'MacOS' => '(Mac_PowerPC)|(Macintosh)',
'QNX' => 'QNX',
'BeOS' => 'BeOS',
'OS2' => 'OS/2',
'SearchBot' => '(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp)|(MSNBot)|(Ask Jeeves/Teoma)|(ia_archiver)'
);
$uagent = strtolower($uagent ? $uagent : $_SERVER['HTTP_USER_AGENT']);
foreach ($oses as $os => $pattern)
if (preg_match('/' . $pattern . '/i', $uagent))
return $os;
return 'Unknown';
}
echo os_info($uagent);
Vielen Dank! Das hat perfekt funktioniert. :) – totallyuneekname
Gut zu wissen, dass es geholfen hat :) –
Dieser Code erkennt alle iOS-Geräte als Mac, weil sie alle "wie Mac OS X" in ihren UA enthalten. Stattdessen sollten Sie nach "Macintosh" anstelle von "Mac" suchen. – kremalicious