Tarayıcı Bilgilerini Alma
Tasarımcılar için sinir bozucu bir olaydır browserlar ile uğraşmak. Tarayıcı pazarında Microsoft başta olmak üzere diğer şirketlerinde W3 standartlara uymamasından kaynaklanıyor. W3 standartlarında sayfa hazırlıyorsun ama nafile siteye girdiğinde her bir browserda birbirinden farklı hatalar görüyorsun. Şu günlerde Ie8 çıktı. Microsoft Ie8 için bir metatag geliştirmiş. Bu metatag sayesinde Ie7 de çalışan sitemiz Ie8'de sorunsuz çalışacaktır deniliyor.
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
Bu dipnottan sonra tarayıcı versiyonunu ASP & PHP&ASP.Net ve Javascript ile nasıl bulabileceğimiz konusuna değineceğim.
ASP İLE TARAYICI TANIMA
if InStr(Request.ServerVariables("HTTP_USER_AGENT"), "Chrome") then Response.Write "Chrome"
elseif InStr(Request.ServerVariables("HTTP_USER_AGENT"), "MSIE 6") then Response.Write "IE 6"
elseif InStr(Request.ServerVariables("HTTP_USER_AGENT"), "Firefox") then Response.Write "Firefox"
elseif InStr(Request.ServerVariables("HTTP_USER_AGENT"),"Windows CE") then Response.Write "Windows CE"
ile ASP de tarayıcıyı tanıyabiliriz. Fonksiyonel bir yapı haline getirilerek daha kullanışlı bir hale getirilebilinir. Örnekte görüldüğü gibi Windows CE kontrolu yapılarak PDA'dan girilip girilmediğide kontrol edilebilinir.
PHP İLE TARAYICI TANIMA
$browser = $_SERVER['HTTP_USER_AGENT'];
if( eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}",$browser,$regs) || eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}",$browser,$regs))
{$browser = "Opera $regs[2]";;}
else if( eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})",$browser,$regs) )
{$browser = "MSIE $regs[2]";}
else if( eregi("(netscape6)/(6.[0-9]{1,3})",$browser,$regs) )
{$browser = "Netscape $regs[2]";}
else if( eregi("mozilla/5",$HTTP_USER_AGENT) )
{$browser = "Netscape";}
else if( eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})",$$browser,$regs) )
{$browser = "Netscape $regs[2]";}
else
{$browser = "?";}
PHP ile tarayıcı bilgileri alma işleminde ise $_SERVER['HTTP_USER_AGENT'] kullanabilirsiniz. Tabi PHP'de alternatif olarak get_browser fonksiyonuda bulunmakta. get_browser ile $_SERVER['HTTP_USER_AGENT'] arasındaki farka bakmak için
<?php $_SERVER['HTTP_USER_AGENT'] . "nn"; $browser = get_browser(null, true); print_r($browser); ?>
yazmanız yeterlidir.
ASP.Net (C#) İLE TARAYICI TANIMA
System.Web.HttpBrowserCapabilities browser = Request.Browser;
string name = browser.Browser;
float version = (float)(browser.MajorVersion + browser.MinorVersion);
if (name == "IE" && version >= 7){
//IE 7 Kullanılıyor
}
elseif(name == "Firefox" && version >= 2){
//Firefox 2 kullanılıyor
}
JAVASCRIPT İLE TARAYICI TANIMA
İnternette bulmuş olduğum(Browser Detection) ve güzel bir javascript kodu olduğunu düşündüğüm bir kodu paylaşmak istiyorum.
var BrowserDetect = {
init: function () {
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
this.version = this.searchVersion(navigator.userAgent)
|| this.searchVersion(navigator.appVersion)
|| "an unknown version";
this.OS = this.searchString(this.dataOS) || "an unknown OS";
},
searchString: function (data) {
for (var i=0;i<data.length;i++) {
var dataString = data[i].string;
var dataProp = data[i].prop;
this.versionSearchString = data[i].versionSearch || data[i].identity;
if (dataString) {
if (dataString.indexOf(data[i].subString) != -1)
return data[i].identity;
}
else if (dataProp)
return data[i].identity;
}
},
searchVersion: function (dataString) {
var index = dataString.indexOf(this.versionSearchString);
if (index == -1) return;
return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
},
dataBrowser: [
{
string: navigator.userAgent,
subString: "Chrome",
identity: "Chrome"
},
{ string: navigator.userAgent,
subString: "OmniWeb",
versionSearch: "OmniWeb/",
identity: "OmniWeb"
},
{
string: navigator.vendor,
subString: "Apple",
identity: "Safari",
versionSearch: "Version"
},
{
prop: window.opera,
identity: "Opera"
},
{
string: navigator.vendor,
subString: "iCab",
identity: "iCab"
},
{
string: navigator.vendor,
subString: "KDE",
identity: "Konqueror"
},
{
string: navigator.userAgent,
subString: "Firefox",
identity: "Firefox"
},
{
string: navigator.vendor,
subString: "Camino",
identity: "Camino"
},
{ // for newer Netscapes (6+)
string: navigator.userAgent,
subString: "Netscape",
identity: "Netscape"
},
{
string: navigator.userAgent,
subString: "MSIE",
identity: "Explorer",
versionSearch: "MSIE"
},
{
string: navigator.userAgent,
subString: "Gecko",
identity: "Mozilla",
versionSearch: "rv"
},
{ // for older Netscapes (4-)
string: navigator.userAgent,
subString: "Mozilla",
identity: "Netscape",
versionSearch: "Mozilla"
}
],
dataOS : [
{
string: navigator.platform,
subString: "Win",
identity: "Windows"
},
{
string: navigator.platform,
subString: "Mac",
identity: "Mac"
},
{
string: navigator.userAgent,
subString: "iPhone",
identity: "iPhone/iPod"
},
{
string: navigator.platform,
subString: "Linux",
identity: "Linux"
}
]
};
BrowserDetect.init();
Son olarak Tarayıcıların User agent tablosuna buradan ulaşabilirsiniz. Ama unutulmamalıdır ki User-agent bilgisinin değiştirilmesi mümkündür.
04 Ocak 2010, 23:04
C# ile
Request.ServerVariables["HTTP_USER_AGENT"];
dendiğinde de User agent i alabilirsiniz..
05 Ocak 2010, 09:03
Mehmet zaten PHP’de User Agent o şekilde alınmış.
04 Şubat 2010, 13:52
Ramazan Selam,
Ben c# i kastettim
04 Şubat 2010, 21:13
Pardon o zaman yanlış anlaşılma olmuş :) Ekleme için teşekkürler.