KodFeed İLMİN ZEKATI…

20Eki/099

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.

VN:F [1.9.13_1145]
Rating: 8.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: +1 (from 1 vote)
Tarayıcı Bilgilerini Alma, 8.0 out of 10 based on 1 rating
Yorumlar (9) Geri izlemeler (2)
  1. C# ile

    Request.ServerVariables["HTTP_USER_AGENT"];

    dendiğinde de User agent i alabilirsiniz..

    VA:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  2. Mehmet zaten PHP’de User Agent o şekilde alınmış.

    VN:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  3. Ramazan Selam,

    Ben c# i kastettim

    VA:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  4. Pardon o zaman yanlış anlaşılma olmuş :) Ekleme için teşekkürler.

    VN:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  5. ö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.

    VA:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  6. 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 :)

    VA:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  7. Merhaba Ali, hatırlattığın için teşekkürler. Yazıyı update ettim. Bu iş için get_browser methodunu kullanabilirsiniz.

    VN:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  8. 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 :)

    VA:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.13_1145]
    Rating: 0 (from 0 votes)
  9. 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'];
    ?>
    
    VN:F [1.9.13_1145]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.13_1145]
    Rating: 0 (from 0 votes)

Leave a comment

(required)