Detekce prohlížeče II

Klíčová slova: Programování, Detekce, BROWSE, HTTP_USER_AGENT
Rubrika: PHP
Po několika pokusech, přečtených článcích a chvilky programování vám přináším již druhou verzi procedury pro detekci prohlížeče. Funkce vychází z rozebírání proměnné $HTTP_USER_AGENT. Plněny jsou tři globálních proměnné $BName, $BVersion, $BPlatform. V této verzi je podrobnější detekce Windows a detekce základních dowloaderu.
 
Seznam detekovaných downloaderů:
  • Offline Explorer
  • Web Downloader
  • Mass Downloader
 
Seznam detekovaných browserů:
  • Safari (1.0Beta)
  • Opera (7.0)
  • NetCaptor (7.0.2)
  • Lynx (2.8.4)
  • Konqueror
  • Links
  • ICab
  • Amaya
  • Lotus
  • Mosaic
  • MSIE
  • Netscape
  • Mozilla
  • W3M
 

function detect_browser()
{
global $HTTP_USER_AGENT, $BName, $BVersion, $BPlatform;

// Browser & Download Managers
if(eregi("(Offline Explorer)/([0-9]{1}.[0-9]{1})",$HTTP_USER_AGENT,$match))
{
$BName = "Offline Explorer"; $BVersion=$match[2];
}
elseif(eregi("(Web Downloader)/([0-9]{1}.[0-9]{1})",$HTTP_USER_AGENT,$match))
{
$BName = "Web Downloader"; $BVersion=$match[2];
}
elseif(eregi("(Mass Downloader)/([0-9]{1}.[0-9]{1})",$HTTP_USER_AGENT,$match))
{
$BName = "Mass Downloader"; $BVersion=$match[2];
}
elseif(eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}",$HTTP_USER_AGENT,$match) ||
eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}",$HTTP_USER_AGENT,$match))
{
$BName = "Opera"; $BVersion=$match[2];
}
elseif( eregi("(NetCaptor) ([0-9]{1,2}.[0-9]{1,3}.[0-9]{1,3})",$HTTP_USER_AGENT,$match) || eregi("(NetCaptor) ([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BName = "NetCaptor"; $BVersion=$match[2];
}
elseif(eregi("(Safari)/([0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BName = "Safari"; $BVersion="1.0 Beta ver.".$match[2];
}
elseif(eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BName = "Konqueror"; $BVersion=$match[2];
}
elseif(eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})",$HTTP_USER_AGENT,$match))
{
$BName = "Lynx "; $BVersion=$match[2];
}
elseif(eregi("(links) (([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BName = "Links "; $BVersion=$match[2];
}
elseif(eregi("(icab)",$HTTP_USER_AGENT,$match))
{
$BName = "iCab "; $BVersion="Unknown";
}
elseif(eregi("(amaya)",$HTTP_USER_AGENT,$match))
{
$BName = "amaya "; $BVersion="Unknown";
}
elseif(eregi("(lotus)",$HTTP_USER_AGENT,$match))
{
$BName = "Lotus "; $BVersion="Unknown";
}
elseif(eregi("(mosaic)",$HTTP_USER_AGENT,$match))
{
$BName = "Mosaic "; $BVersion="Unknown";
}
elseif(eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BName = "MSIE "; $BVersion=$match[2];
}
elseif(eregi("(netscape6)/(6.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BName = "Netscape "; $BVersion=$match[2];
}
elseif(eregi("(Gecko)/([0-9]{1,8})",$HTTP_USER_AGENT,$match))
{
$BName = "Mozilla";
$BVersion=$match[2];
if (eregi("(rv):([0-9]{1,2}.[0-9]{1,3}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BVersion=$match[2];
};
if (eregi("(rv):([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BVersion=$match[2];
};
}
elseif(eregi("mozilla/5",$HTTP_USER_AGENT))
{
$BName = "Netscape"; $BVersion="Unknown";
}
elseif(eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})",$HTTP_USER_AGENT,$match))
{
$BName = "Netscape "; $BVersion=$match[2];
}
elseif(eregi("w3m",$HTTP_USER_AGENT))
{
$BName = "w3m"; $BVersion="Unknown";
}
else{$BName = "Unknown"; $BVersion="Unknown";}

// detekce Systemu
if(eregi("linux",$HTTP_USER_AGENT))
{
$BPlatform = "Linux";
}
elseif((eregi("Windows XP",$HTTP_USER_AGENT))
|| (eregi("(Windows NT 5.1)",$HTTP_USER_AGENT,$match)))
{
$BPlatform = "Windows XP";
}
elseif((eregi("(Windows 2000)",$HTTP_USER_AGENT,$match))
|| (eregi("(Windows NT 5.0)",$HTTP_USER_AGENT,$match)))
{
$BPlatform = "Windows 2000";
}
elseif(eregi("win32",$HTTP_USER_AGENT))
{
$BPlatform = "Windows";
}
elseif((eregi("(win)([0-9]{4})",$HTTP_USER_AGENT,$match))
|| (eregi("(windows) ([0-9]{4})",$HTTP_USER_AGENT,$match)))
{
$BPlatform = "Windows $match[2]";
}
elseif((eregi("(win)([0-9]{2})",$HTTP_USER_AGENT,$match))
|| (eregi("(windows) ([0-9]{2})",$HTTP_USER_AGENT,$match)))
{
$BPlatform = "Windows $match[2]";
}
elseif(eregi("(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}",$HTTP_USER_AGENT,$match))
{
$BPlatform = "Windows NT $match[2]";
}
elseif(eregi("(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}",$HTTP_USER_AGENT,$match))
{
$BPlatform = "Windows NT $match[3]";
}
elseif(eregi("mac",$HTTP_USER_AGENT))
{
$BPlatform = "Macintosh";
}
elseif(eregi("(sunos) ([0-9]{1,2}.[0-9]{1,2}){0,1}",$HTTP_USER_AGENT,$match))
{
$BPlatform = "SunOS $match[2]";
}
elseif(eregi("(beos) r([0-9]{1,2}.[0-9]{1,2}){0,1}",$HTTP_USER_AGENT,$match))
{
$BPlatform = "BeOS $match[2]";
}
elseif(eregi("freebsd",$HTTP_USER_AGENT))
{
$BPlatform = "FreeBSD";
}
elseif(eregi("openbsd",$HTTP_USER_AGENT))
{
$BPlatform = "OpenBSD";
}
elseif(eregi("irix",$HTTP_USER_AGENT))
{
$BPlatform = "IRIX";
}
elseif(eregi("os/2",$HTTP_USER_AGENT))
{
$BPlatform = "OS/2";
}
elseif(eregi("plan9",$HTTP_USER_AGENT))
{
$BPlatform = "Plan9";
}
elseif(eregi("unix",$HTTP_USER_AGENT) || eregi("hp-ux",$HTTP_USER_AGENT))
{
$BPlatform = "Unix";
}
elseif(eregi("osf",$HTTP_USER_AGENT))
{
$BPlatform = "OSF";
}
else{$BPlatform = "Unknown";}

}

Autor: Jiří Provazník
Datum vydání: 06.02.2003 | Zobrazeno: 4740
Permanentní odkaz: Detekce prohlížeče II

Komentáře (0)
Přidej vlastní komentář:
Následující (běžně neviditelná) pole slouží pro vnitřní identifikaci systému. Pokud je vyplníte nebude možné váš požadavek na straně serveru zpracovat:
URL:
contents:
Website:
Pro odeslání vašeho komentáře použijte tlačítko "Odeslat". Toto tlačítko nepoužívejte:

Následující položky je vhodné vyplnit:
Jméno :
Email :
Web :
Místo :
Hodnocení:
Hodnocení jako pomocí hvězdiček
1/5= nejhorší, 5/5=nejlepší