به دلایل مختلفی ممکن است بخواهید بدانید مرورگر کاربر چیست. به طور مثال، میخواهید کاربر خود را مجبور کنید که از مرورگر Internet Explorer 6 استفاده نکنند و یه به خاطر مسائل امنیتی و یا مسائل آماری، مرورگر و سیستم عامل کاربر را در دیتابیس درج کنید.
در حالت کلی، یک شبهتابع داریم که تقریباً مشخصات کامل سیستم کاربر (جزئیات مرورگر، جزئیات سیستم عامل و ...) را نمایش میدهد. به این صورت:
$browser=$_SERVER['HTTP_USER_AGENT'];
مثلاً یک خروجی از سیستم من در این حالت عبارت است از:
Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0
دادههایی که در این خروجی وجود دارد، عبارتند از: شرکت سازنده مرورگر (Mozilla)، نام سیستم عامل (Windows)، نسخه دقیق سیستم عامل (6.1)، هسته مروگر (Gecko)، نام مرورگر (Firefox) و نسخه مرورگر (8.0)
بنابراین، با این دستور جزئیات کاملی در مورد Agent یا عامل کاربر خواهید داشت.
اما موضوع این است که چطور این اطلاعات را بخش بخش کنیم و نسبت به آنها تصمیم بگیریم. مثلاً چطور بفهمیم که کاربر از مرورگر IE 6 استفاده میکند؟
خوب، اولین کار این است که بدانید این کد، نام مرورگرها و سیستم عاملهای مختلف را چطور نشان میدهد. برای این کار شاید لازم باشد که یک صفحه ساده طراحی کنید که کد بالا را چاپ کند. حالا با مرورگرهای مختلف آنرا بازدید کنید و ببینید چه خروجیای مشاهده میشود؟
ما یک صفحه ساده برای این کار در آدرس زیر قرار دادهایم:
مثلاً به برخی خروجیهای دیگر در مرورگرها و سیستم عاملهای دیگر دقت کنید:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; FDM; InfoPath.3; .NET4.0C; .NET4.0E; BRI/2; Tablet PC 2.0)
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031007 Firebird/0.7
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.4) Gecko/20011128 Netscape6/6.2.1
Uzbl (Webkit 1.1.17) (GNU/Linux i686 [i686]) (Commit 1958b52d41cba96956dc1995660de49525ed1047)
بعد از کمی بررسی، حالا میتوانید با استفاده از تابع preg_match دقیقاً متوجه شوید که کاربر از چه مرورگر یا سیستم عاملی استفاده میکند. مثلاً به این قطعه کد دقت کنید:
<?php $browser = $_SERVER['HTTP_USER_AGENT']; if(preg_match('/MSIE 6/i',$browser)) { echo 'شما از اینترنت اکسپلورر 6 استفاده میکنید. لطفاً مروگر خود را ارتقا دهید'; } ?>
در مثال بالا با preg_match چک کردهایم که اگر در مشخصات Agent، عبارت MSIE 6 وجود داشت مطمئناً مرورگر او اینترنت اکسپلورر 6 است، پس پیغام درخور را نشان بده.
و یا برای یافتن ویندوز ایکس.پی، اگر یک بار با ویندوز XP وارد صفحه بالا شوید، خواهید داشت:
Windows XP SP3 Build 2600 – IE v7.0.5730.13
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; chromeframe; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
پس عبارت Windows NT 5 میتواند یک نشانه برای ویندوز XP باشد. بنابراین:
<?php $browser = $_SERVER['HTTP_USER_AGENT']; if(preg_match('/Windows NT 5/i',$browser)) { echo 'شما از ویندوز ایکس.پی استفاده میکنید. لطفاً ویندوز خود را ارتقا دهید'; } ?>
طبیعتاً اگر مرورگرهای مختلف و سیستم عاملهای مختلف و گوشیها و تبلتها و ... را هم درگیر کنیم، خواهیم دید که تشخیص دقیق سیستم عامل، مرورگر و نسخههای آنها نیاز به یک بانک اطلاعاتی نسبتاً بزرگ دارد. میتوانید لیست Agentهای مختلف را در آدرس زیر ببینید:
http://www.user-agents.org/index.shtml
و یا اینجا:
http://www.mrsneeze.com/httplogs/useragents.html
میبینید که لیست بلند بالایی است!
البته خیلی از آنها معمولاً بسیار کم کاربرد هستند و میتوانید فقط روی مرورگرهای پرطرفدار تمرکز کنید.
اسکریپت آماده؟
اگر حوصله درگیر شدن با دردسر را ندارید، میتوانید از این اسکریپت قوی استفاده کنید:
سایت رسمی:
http://techpatterns.com/downloads/php_browser_detection.php
لینک دانلود:
راهنمای کامل آن به صورت انگلیسی در همین فایل متنی که دانلود خواهید کرد موجود است، اما اگر سر درنیاوردید، به توضیحات بنده گوش کنید:
پس از دانلود، کد را کع شامل چندین تابع است، در بخشی از صفحه php خود قرار دهید.
برای اینکه تمام جزئیات Agent کاربر را به دست آورید، کافیست به این صورت تابع browser_detection را فراخوانی کنید:
$browser = browser_detection( 'full' );
حالا، $browser یک آرایه با 18 خانه است که در هر خانهاش اطلاعات زیر قرار خواهد گرفت:
0 - $browser_working - شرکت سازنده مرورگر
1 - $browser_number - نسخه مرورگر
2 - $ie_version - اگر مرورگر اینترنت اکسپلورر باشد، شماره نسخه
3 - $b_dom_browser - DOM پشتیبانی از
4 - $b_safe_browser - نحوه کار کردن و پشتیبانی از جاوااسکریپت و سی.اس.اس
5 - $os_type - نوع سیستم عامل - nt:windows , mac,..
6 - $os_number - نسخه سیستم عامل
7 - $browser_name - نام مرورگر
8 - $ua_type - نوع عامل - bro: مرورگر
9 - $browser_math_number - عدد دقیق مرورگر
10 - $a_moz_data - مشخصات جزئی مرورگر فایرفاکس
11 - $a_webkit_data - مشخصات وبکیت که در سافاری معنی دارد
12 - $mobile_test (null or string value) - نام دستگاه موبایل - مثلاً: iphone
13 - $a_mobile_data (null or array of mobile data) - جزئیات دستگاه موبایل
14 - $true_ie_number - عدد دقیق مرورگر اینترنت اکس1لورر
15 - $run_time - میزان زمانی که طول کشید تا کد اجرا شود
16 - $html_type - میزان پشتیبانی از اچ.تی.ام.ال - بالاتر از 1 خوب است
17 - $a_engine_data - مشخصات موتور مرورگر
مثلاً دقت کنید که در فایرفاکس 8 در ویندوز 7 این آرایه چطور پر میشود:
Array ( [0] => moz [1] => 8 [2] => [3] => 1 [4] => 1 [5] => nt [6] => 6.1 [7] => gecko [8] => bro [9] => 8 [10] => Array ( [0] => firefox [1] => 8.0 [2] => 8 [3] => 8.0 [4] => 20100101 ) [11] => Array ( [0] => [1] => [2] => 8 ) [12] => [13] => [14] => [15] => 0.00053787 [16] => 3 [17] => Array ( [0] => gecko [1] => 8.0 [2] => 8 ) )
و یا مثلاً در اینترنت اکسپلورر 9 در ویندوز 7 داریم:
Array ( [0] => ie [1] => 9.0 [2] => ie9x [3] => 1 [4] => 1 [5] => nt [6] => 6.1 [7] => msie [8] => bro [9] => 9.0 [10] => Array ( [0] => [1] => [2] => [3] => [4] => ) [11] => Array ( [0] => [1] => [2] => 9.0 ) [12] => [13] => [14] => 9.0 [15] => 0.00070691 [16] => 2 [17] => Array ( [0] => trident [1] => 5.0 [2] => 5.0 ) )
برای درج هر کدام از خانهها، کافیست به صورت زیر عمل کنید:
(به عددی که مقابل آرایه browser نوشته شده است، دقت کنید)
<?php $browser = browser_detection( 'full' ); switch($browser[0]){ case 'ie': $b = 'اینترنت اکسپلورر'; break; case 'moz': $b = 'فایرفاکس'; break; case 'op': $b = 'اپرا'; break; case 'webkit': $b = 'سافاری'; break; default: $b = 'ناشناخته'; break; } echo 'شما از مرورگر '.$b.' نسخه '.$browser[1].' استفاده میکنید. <br />'; ?>
خروجی کار را در این صفحه میبینید:
اگر به فایل کدهای صفحه بالا نیاز دارید، این فایل را دانلود کنید:
http://tutorials.aftab.cc/web_designing/php/browser/index.zip
موفق باشید؛
حمید رضا نیرومند