Nasıl PHP kullanarak tarayıcı adını alabilirim? Ben bu basit olacağını düşündüm? Yapmam gereken tüm IE ve Firefox arasında ayrım olduğunu.
if (strpos($_SERVER['HTTP_USER_AGENT'], '(compatible; MSIE ')!==FALSE) {
...ie specific...
}
Ama! Don't!
Sunucu tarafında user-agent koklama için iyi bir nedeni nadiren vardır. Bu da dahil olmak üzere, sorunların bir demet getiriyor:
Onlar genellikle, veya tamamen kullanıcı aracısı başlığını şerit, ya da kimin hakkında yalan tarayıcıları ve diğer kullanıcı-ajanlar zor gerçek tarayıcı başlık metinden ne ayırt etmek. Örneğin yukarıdaki kural aynı zamanda IE sızdırma olduğunda Opera algılamak ve masaüstü IE için çok farklı bir tarayıcı olduğu gibi veya istediğiniz olmayabilir IEMobile (Windows Mobile), olacaktır.
Eğer sunucu tarafında kullanıcı aracısı ayrımcılık varsa, aksi yakınlık sayfanın bir sürümünü önbelleğe ve eşleşmiyor diğer tarayıcılarda iade edebilir, karşılık olarak bir Vary: User-Agent
başlığı dönmelidir . Ancak, bu başlık dahil IE önbelleğe kadar karışıklık yan etkisi vardır.
Size ulaşmak için çalışıyoruz ne bağlı olarak, CSS kesmek, JScript veya conditional comments kullanarak, istemci tarafında IE ve diğer tarayıcılar arasındaki farkları ele çok daha iyi bir yolu hemen hemen her zaman vardır. Sizin durumunuzda IE tespit çalıştıkları için gerçek amacı nedir?
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";
$browser = get_browser(null, true);
print_r($browser);
?>
Baskılar:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3
Array
(
[browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
[browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
[parent] => Firefox 0.9
[platform] => WinXP
[browser] => Firefox
[version] => 0.9
[majorver] => 0
[minorver] => 9
[cssversion] => 2
[frames] => 1
[iframes] => 1
[tables] => 1
[cookies] => 1
[backgroundsounds] =>
[vbscript] =>
[javascript] => 1
[javaapplets] => 1
[activexcontrols] =>
[cdf] =>
[aol] =>
[beta] => 1
[win16] =>
[crawler] =>
[stripper] =>
[wap] =>
[netclr] =>
)
Bu kodu deneyin ...
<?php
function getBrowser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$bname = 'Unknown';
$platform = 'Unknown';
$version= "";
//First get the platform?
if (preg_match('/linux/i', $u_agent)) {
$platform = 'linux';
}
elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
$platform = 'mac';
}
elseif (preg_match('/windows|win32/i', $u_agent)) {
$platform = 'windows';
}
// Next get the name of the useragent yes seperately and for good reason
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
{
$bname = 'Internet Explorer';
$ub = "MSIE";
}
elseif(preg_match('/Firefox/i',$u_agent))
{
$bname = 'Mozilla Firefox';
$ub = "Firefox";
}
elseif(preg_match('/Chrome/i',$u_agent))
{
$bname = 'Google Chrome';
$ub = "Chrome";
}
elseif(preg_match('/Safari/i',$u_agent))
{
$bname = 'Apple Safari';
$ub = "Safari";
}
elseif(preg_match('/Opera/i',$u_agent))
{
$bname = 'Opera';
$ub = "Opera";
}
elseif(preg_match('/Netscape/i',$u_agent))
{
$bname = 'Netscape';
$ub = "Netscape";
}
// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
// we have no matching number just continue
}
// see how many we have
$i = count($matches['browser']);
if ($i != 1) {
//we will have two since we are not using 'other' argument yet
//see if version is before or after the name
if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
$version= $matches['version'][0];
}
else {
$version= $matches['version'][1];
}
}
else {
$version= $matches['version'][0];
}
// check if we have a number
if ($version==null || $version=="") {$version="?";}
return array(
'userAgent' => $u_agent,
'name' => $bname,
'version' => $version,
'platform' => $platform,
'pattern' => $pattern
);
}
// now try it
$ua=getBrowser();
$yourbrowser= "Your browser: " . $ua['name'];
echo $yourbrowser;
?>
Output of Firefox
Mozilla Firefox
browscap yerine kullanıcı ajanın daha umut verici gibi görünüyor. ben bu sitede insan ziyareti, css sürümü vs ip_address, tarayıcı, os, bot getiriliyor gibi yaygın sorunların çok çözen bir sınıf aracılığıyla olmuştur. i şimdi kaç haftadır kullanıyorum ... sonuçlar umut vericidir.
Eğer tarayıcı adlarının tüm almak istiyorsanız tarayıcı php kodu tespit için arama yapabilirsiniz. Try this one.
İşte Chrome, Firefox, Safary, Internet Explorer ve diğer tarayıcılar belirleyebilir bir kod alırsınız.