شنبه ۱ دی ۱۴۰۳ |  عضویت / ورود

آموزش تشخیص مرورگر و سیستم عامل کاربر با استفاده از PHP


Friday, 2011 December 23   نویسنده: Hamid   تعداد بازدید: 14635 بار  #آموزش PHP‏   امتیاز متوسط: امتیازی داده نشده است

به دلایل مختلفی ممکن است بخواهید بدانید مرورگر کاربر چیست. به طور مثال، می‌خواهید کاربر خود را مجبور کنید که از مرورگر 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 استفاده می‌کند؟

خوب، اولین کار این است که بدانید این کد، نام مرورگرها و سیستم عامل‌های مختلف را چطور نشان می‌دهد. برای این کار شاید لازم باشد که یک صفحه ساده طراحی کنید که کد بالا را چاپ کند. حالا با مرورگرهای مختلف آن‌را بازدید کنید و ببینید چه خروجی‌ای مشاهده می‌شود؟

ما یک صفحه ساده برای این کار در آدرس زیر قرار داده‌ایم:

http://yourl.ir/browser

 

مثلاً به برخی خروجی‌های دیگر در مرورگرها و سیستم عامل‌های دیگر دقت کنید:

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

لینک دانلود:

http://techpatterns.com/downloads/download_item.php?folder=scripts&filename=browser_detection_php_ar.txt

راهنمای کامل آن به صورت انگلیسی در همین فایل متنی که دانلود خواهید کرد موجود است، اما اگر سر درنیاوردید، به توضیحات بنده گوش کنید:

پس از دانلود، کد را کع شامل چندین تابع است، در بخشی از صفحه 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://yourl.ir/browser

اگر به فایل کدهای صفحه بالا نیاز دارید، این فایل را دانلود کنید:

http://tutorials.aftab.cc/web_designing/php/browser/index.zip

 

 

موفق باشید؛
حمید رضا نیرومند


.



ارسال سؤال یا نظر


1- حامد:
بوسیله: , در: Saturday, 2012 October 20-کد: 5123
سلام
ببخشيد مي خواستم يك بخش بذارم كه اگر طرف با موبايل وارد سايد بشه يك پيغام خاصي رو نمايش بده . مي تونيد كمك كنيد ؟
info@tizweb.ir


2- imansaye:
بوسیله: , در: Friday, 2012 November 02-کد: 5230
رفیق ممنون بهش نیاز داشتم


3- حمید:
بوسیله: , در: Monday, 2013 July 08-کد: 7274
سلام خیلی خوب بود ولی من اینو تو وردپرس میخوام

میخوام تو یه بلوک جداگانه کنار سایت قرارش بدم تا اطلاعات کاربر رو نشون بده و مثلا اگر مرورگرش IE بود بهش بگه که از مرورگر فلان استفاده کن

وقتی کد رو تو بلوک گذاشتم خود کد رو نشون میداد اگر میشه راهنماییم کنید ... خیلی ممنون :)


4- علی:
بوسیله: , در: Tuesday, 2013 December 31-کد: 8997
با سلام و خسته نباشید
کدی که در بالا ارایه کردید برای اخطار مرورگر قدیمی یا ویندوز قدیمی را کمی تغیر دادم تا نسخه ویندوز را نشان دهد اما علاوه بر نشان دادن نوع ویندوز، میخواهم تا در فایلی دیگر نوع ویندوز یا سیستم عامل بازدید کنندگان را ذخیره کند. لطفا راهنمایی بفرمایید
ایدی بنده p30_a@yahoo.com
این هم کد. فقط برای ذخیره راهنمایی بفرمایید



5- :
بوسیله: , در: Monday, 2015 November 09-کد: 13976
دمت گرم جالب بود


6- hossein:
بوسیله: , در: Sunday, 2015 November 29-کد: 14039
سلام میخواستم بدون که چطور میشه کاربرا رو به این صورت محدود کرد که اگه کسی با رایانه خواست وارد بشه نتونه
اگه ممکنه به ایمیلم پاسخ رو ارسال کنید
admirallam4@gmail.com


7- Milad:
بوسیله: , در: Sunday, 2021 January 24-کد: 16521
سلام rnمیشه اینترنت کاربر تشخیص داد؟ rnمثلا اینترنت مخابرات یا.....

Tutorials ©