تشخیص مرورگر و سیستم عامل کاربر به کمک به PHP در کانستراکت
#1
Lightbulb 
به نام خدا؛
سلام دوستان امیدوارم حالتون خوب باشه...
حتماً با اکشن های کانستراکت که قادر به تشخیص سیستم عامل و یا حضور کاربر با موبایل در بازی هستن آشنا هستین و ازشون استفاده کردین. اما طبق اظهار خود کانستراکت متأسفانه گاهی اوقات این اکشن ها دقت چندان بالایی ندارن و دچار خطا میشن. اگر بازی یا پروژه تون آنلاین هست میتونین به راحتی با تحلیل useragent ارسالی توسط مرورگر (دستگاه) کاربر به سرور به کمک PHP سیستم عامل و مرورگر کاربر رو تشخیص بدین.
یوزر ایجنت (Useragent) چیست؟
همونطور که در ابتدا گفتم، قصد داریم useragent ارسالی کاربر رو تحلیل کنیم و سیستم عامل و یا مرورگر اون رو تشخیص بدیم. اما useragent (یوزر ایجنت) چی هست؟
وقتی شما توسط مرورگر یک درخواست (Request) در قالب HTTP ارسال می کنید مرورگر شما یکسری اطلاعات (هدرها) رو به سروری که بهش درخواست میدین ارسال میکنه. این اطلاعات یا هدرها شامل یازده مورد میشن. یکی از این یازده هدر ارسال شده useragent نام داره که مشخصات مرورگر و سیستم عامل از اون قابل استخراجه. پس شما میتونین با استفاده از یک زبان سمت سرور (به عبارت دیگه زبانی که تنها روی سرور اجرا میشه) مثل PHP هدر useragent که توسط مرورگر (دستگاه) کاربر به سرور ارسال میشه رو دریافت کنین و اون رو تحلیل کنین.
من یک کد PHP نوشتم که قادره سیستم عامل، مرورگر و موبایلی بودن یا نبودن سیستم کاربر رو تشخیص بده. کد PHP به این شرحه:
کد php:
<?php
/**
* @author Master Badfar
* @copyright 2020
*/
// صدور مجوز ajax برای مرورگر
header('Access-Control-Allow-Origin: *');
// قطع نمایش خطاهای مفسر PHP
ini_set('display_errors'0);
error_reporting(~E_WARNING & ~E_NOTICE & ~E_STRICT);
// دریافت یوزر ایجنت و ذخیره آن در یک متغیر
$user_agent $_SERVER['HTTP_USER_AGENT'];
// تعریف فانکشن دریافت سیستم عامل
function getOS() {
// تعریف سیستم عامل های مختلف در قالب یک آرایه
    $os_array     = array(
                          '/windows nt 10/i'      =>  'Windows 10',
                          '/windows nt 6.3/i'     =>  'Windows 8.1',
                          '/windows nt 6.2/i'     =>  'Windows 8',
                          '/windows nt 6.1/i'     =>  'Windows 7',
                          '/windows nt 6.0/i'     =>  'Windows Vista',
                          '/windows nt 5.2/i'     =>  'Windows Server 2003/XP x64',
                          '/windows nt 5.1/i'     =>  'Windows XP',
                          '/windows xp/i'         =>  'Windows XP',
                          '/windows nt 5.0/i'     =>  'Windows 2000',
                          '/windows me/i'         =>  'Windows ME',
                          '/win98/i'              =>  'Windows 98',
                          '/win95/i'              =>  'Windows 95',
                          '/win16/i'              =>  'Windows 3.11',
                          '/macintosh|mac os x/i' =>  'Mac OS X',
                          '/mac_powerpc/i'        =>  'Mac OS 9',
                          '/linux/i'              =>  'Linux',
                          '/ubuntu/i'             =>  'Ubuntu',
                          '/iphone/i'             =>  'iPhone',
                          '/ipod/i'               =>  'iPod',
                          '/ipad/i'               =>  'iPad',
                          '/android/i'            =>  'Android',
                          '/blackberry/i'         =>  'BlackBerry',
                          '/webos/i'              =>  'Mobile'
                    );
   // اگر سیستم عامل در آرایه تعریف نشده باشد خروجی نمایش عبارت سیستم عامل ناشناس باشد
    global $user_agent;
    $os_platform  "Unknown OS Platform";
// بررسی موجود بودن سیستم عامل  در آرایه
    foreach ($os_array as $regex => $value)
        if (preg_match($regex$user_agent))
            $os_platform $value;
// اگر موجود نبود عبارت سیستم عامل ناشناس را نمایش بده یا برگردان
    return $os_platform;
}
// پایان تابع دریافت سیستم عامل
//

// فانکشن دریافت مرورگر
function getBrowser() {
// تعریف مرورگرهای مختلف در قالب آرایه
    $browser_array = array(
                            '/msie/i'      => 'Internet Explorer',
                            '/firefox/i'   => 'Firefox',
                            '/safari/i'    => 'Safari',
                            '/chrome/i'    => 'Chrome',
                            '/edge/i'      => 'Edge',
                            '/Trident/i'      => 'Internet Explorer',
                            '/nwjs/i'      => 'NW.JS Browser',
                            '/opera/i'     => 'Opera',
                            '/netscape/i'  => 'Netscape',
                            '/maxthon/i'   => 'Maxthon',
                            '/konqueror/i' => 'Konqueror',
                            '/mobile/i'    => 'Handheld Browser'
                     );
// اگر مرورگر در آرایه تعریف نشده بود عبارت مرورگر ناشناس را نمایش بده
    global $user_agent;

    $browser "Unknown Browser";
    // تشخیص وجود داشتن مرورگر در آرایه
    foreach ($browser_array as $regex => $value)
        if (preg_match($regex$user_agent))
            $browser $value;
// اگر وجود نداشت مقدار توافق شده در متغیر browser را برگردان
    return $browser;
}
// پایان فانکشن دریافت مرورگر کاربر
//
// تعریف فانکشن تشخیص موبایل بودن سیستم کاربر
function isMobile() {
    return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i"$_SERVER["HTTP_USER_AGENT"]);
}
// پایان تابع تشخیص موبایل بودن سیستم کاربر
//

// استفاده از توابع و دریافت مرورگر و سیستم عامل کاربر
$user_os        getOS();
$user_browser   getBrowser();
// چاپ نتایج
if($_GET['detect'] == 'browser'){
    print_r("Browser: ".$user_browser'</br>');
    }elseif($_GET['detect'] == 'os'){
    print_r("Operating System: ".$user_os '</br>');
    }elseif(empty($_GET['detect'])){
      echo  "You should enter the type of detection!";
      }elseif($_GET['detect'] == "all"){
print_r("Browser: ".$user_browser'</br>'"Operating System: ".$user_os '</br>');
}else{
    echo "Undefined Value!";
    }
// بررسی موبایل بودن سیستم کاربر به کمک فانکشن تعریف شده
if(isMobile()){
    // اگر سیستم کاربر موبایل بود پیغام زیر را نمایش بده
    echo "Mobile device detected.";
}
?>

استفاده از کد PHP :
برای اجرای کد باید ریکوئستی مشابه نمونه زیر ارسال کنین:
کد:
http://yourhost.com/file.php?detect=all/os/browser
همونطور که مشخصه میتونین برای پارامتر detect سه مقدار قرار بدین. اگر مقدار پارامتر رو برابر با all قرار بدین تمامی مشخصات (مشخصات مرورگر و مشخصات سیستم عامل) نمایش داده میشه. اگر مقدار پارامتر رو برابر با os قرار بدین تنها نام سیستم عامل و اگر برابر با browser قرار بدین تنها نام مرورگر نمایش داده میشه.
دقت داشته باشین که تشخیص موبایل بودن یا نبودن سیستم کاربر در هر سه حالت انجام میشه و در صورتی که سیستم کاربر موبایلی باشه عبارت زیر بعد از نمایش نام مرورگر یا نام سیستم عامل و یا هر دو در خط بعد چاپ میشه:
کد:
Mobile device detected.
نکته:
اگر مقدار پارامتر detect هر مقداری غیر از سه حالت تعریف شده بود عبارت زیر نمایش داده می شود:
کد:
Undefined Value!
اگر مقداری برای پارامتر detect تعیین نشده باشد عبارت زیر نمایش داده می شود:
کد:
You should enter the type of detection!
 
امیدوارم این مطلب براتون کاربردی واقع شده باشه.
خوشحال میشم نظراتتون رو بهم گوشزد کنین.
با آرزوی بهترین ها...
غایب
  پاسخ


 سپاس شده توسط: shazde ، M.gh ، amin hosseini ، ᔕinaᗪehghani


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش پروژه محور ساخت بازی مار و پله mohsen_nasri 6 3,807 1403/10/24، 09:38 عصر
آخرین ارسال: Tggi
Star مهم آموزش خروجی اندروید روی سیستم شخصی rezamms 128 86,462 1403/10/23، 04:58 عصر
آخرین ارسال: Tggi
  مهم آموزش تصویری خروجی مستقیم - یکبار برای همیشه! rezamms 33 20,911 1401/2/13، 09:39 عصر
آخرین ارسال: kamran_cn
  خروجی اندرید davinmstr1 2 2,601 1400/8/4، 10:23 عصر
آخرین ارسال: ᔕinaᗪehghani
  AAB (بسته برنامه اندروید) چيست؟ + نحوه خروجي گرفتن در كرودوا ᔕinaᗪehghani 15 8,600 1400/6/21، 01:55 صبح
آخرین ارسال: mehdi1100

پرش به انجمن: