KodFeed Tam senlik :)

20Eki/094

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.

Bu yazıyı beğendiniz mi?

RSS Kaynağımıza abone olun!

Hakkında Ramazan ULUÇAY

Web Developer
Yorumlar (4) Geri izlemeler (1)
  1. C# ile

    Request.ServerVariables["HTTP_USER_AGENT"];

    dendiğinde de User agent i alabilirsiniz..

  2. Mehmet zaten PHP’de User Agent o şekilde alınmış.

  3. Ramazan Selam,

    Ben c# i kastettim

  4. Pardon o zaman yanlış anlaşılma olmuş :) Ekleme için teşekkürler.


Yorum gönder.