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.
Update: Bilindiği gibi PHP 5.3 versiyonundan itibaren eregi ve ereg işlevleri kullanılmamakta. get_browser methodu'nu kullanabilirsiniz.
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.
17 Kasım 2010, 01:43
örnek teleport ile site kopyaladım normalde user agent de teleport yazması gerekirken HTTP_USER_AGENT:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT)
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT) bilgi geliyor böylelikle kötü botları engelleyemiyoruz.
Asp’de bunun bi çözümü varmı. Rakiplerim sitelerimi kopyalıyorlar.
Ama bi sitemde dikkat ettim iframe de sonduz döngü oluyor.
02 Nisan 2011, 18:16
Php ile göstermiş olduğunuz fonksiyonda eregi kullanmışsınız ereg ve eregi fonksiyonları artık desteklenmiyor bunu başka türlü nasıl yapabiliriz :)
02 Nisan 2011, 18:42
Merhaba Ali, hatırlattığın için teşekkürler. Yazıyı update ettim. Bu iş için get_browser methodunu kullanabilirsiniz.
02 Nisan 2011, 20:23
teşekkürler ben internetden bi fonksiyon bulmuştum yanlız kullandım sizin verdiğiniz komutu ama olmadı
fonksiyon işletim sistemi ve browser bilgisi alıyor
http://codemark.net/?I=9647DZF2BE44
bunu nasıl çalışır bir hale getirebilirim zamanınız varsa kontrol edebilirmisiniz :)
02 Nisan 2011, 20:40
Site açılmadı; zaten vermiş olduğum linkte platform da alınmaktaydı. Aşağıda ki kod bloğunu denermisin.
<?php $browser = get_browser(null, true); echo 'İşletim sistemi :' . $browser['platform']; echo 'Browser:' . $browser['browser']; echo 'Version:' . $browser['version']; ?>