28. november 2002 - 22:18
Der er
12 kommentarer og
1 løsning
Detect browser + styresystem
Jeg har brug for at få udskrevet brugerens browser + styresystem. Dette kan gøres med variablen $HTTP_USER_AGENT, som returnerer f.eks.:
"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"
Jeg vil dog gerne have at mit lille script returnerer f.eks.: "Windows 98, Internet Explorer 6.0" eller noget tilsvarende som en alm. bruger kan forholde sig til.
Det skal helst virke for både netscape, IE, Opera m.fl. samt windows, linux, unix, mac...
Er der nogen, der har sådan en lille stump kode, der kan klare det? (Jeg har set at el barto har lavet scriptet
http://www.eksperten.dk/spm/281883)
28. november 2002 - 22:20
#1
// Funktion, der finder brugerens browser, version samt platform ($info = browser|version|os)
function find_browser($info = 'browser')
{
$ua = getenv('HTTP_USER_AGENT'); // gør det lidt nemmere
if ($info == 'browser' || $info == 'version') { // browser og version
if (eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}", $ua, $r) || eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}", $ua, $r)) {
$browser = "Opera";
$version = $r['2'];
} elseif (eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})", $ua, $r)) {
$browser = "Lynx";
$version = $r['2'];
} elseif (eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $ua, $r)) {
$browser = "MSIE";
$version = $r['2'];
} elseif (eregi("(netscape6)/(6.[0-9]{1,3})", $ua, $r)) {
$browser = "Netscape";
$version = $r['2'];
} elseif (eregi("mozilla/5", $ua)) {
$browser = "Netscape";
$version = "5.0"; // pr. definition
} elseif (eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})", $ua, $r)) {
$browser = "Netscape";
$version = $r['2'];
} else {
$browser = "Ukendt";
$version = "3.0"; // pr. definition
}
} else { // os
if (eregi("linux", $ua)) {
$os = "Linux";
} elseif (eregi("win32", $ua)) {
$os = "Windows";
} elseif ((eregi("(win)([0-9]{2})", $ua, $r)) || (eregi("(windows) ([0-9]{2})", $ua, $r))) {
$os = "Windows " . $r['2'];
} elseif (eregi("(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}", $ua, $r)) {
$os = "Windows NT " . $r['2'];
} elseif (eregi("(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}", $ua, $r)) {
$os = "Windows NT " . $r['3'];
} elseif (eregi("mac", $ua)) {
$os = "Macintosh";
} elseif (eregi("(sunos) ([0-9]{1,2}.[0-9]{1,2}){0,1}", $ua, $r)) {
$os = "SunOS " . $r['2'];
} elseif (eregi("(beos) r([0-9]{1,2}.[0-9]{1,2}){0,1}", $ua, $r)) {
$os = "BeOS " . $r['2'];
} elseif (eregi("freebsd", $ua)) {
$os = "FreeBSD";
} elseif (eregi("openbsd", $ua)) {
$os = "OpenBSD";
} elseif (eregi("irix", $ua)) {
$os = "IRIX";
} elseif (eregi("os/2", $ua)) {
$os = "OS/2";
} elseif (eregi("unix", $ua) || eregi("hp-ux", $ua)) {
$os = "Unix";
} else {
$os = "Ukendt";
}
}
// returnér relevant info
return $$info;
}