پی ایچ پی میں صارف کے براؤزر اور آپریٹنگ سسٹم کی معلومات حاصل کریں

اگر آپ یہ جاننا چاہتے ہیں کہ صارف کس براؤزر اور آپریٹنگ سسٹم سے آپ کی ایپلی کیشن یا ویب سائیٹ وزٹ کر رہا ہے تو PHP یہ معلومات ایک اسٹرنگ میں مہیا کرتی ہے۔ لیکن $_SERVER["HTTP_USER_AGENT"] کی یہ اسٹرنگ کچھ ایسی پیچیدہ اور بے ترتیب ہوتی ہے کہ اس میں سے براؤزر کا نام اور ورژن، اور آپریٹنگ سسٹم کا نام اور ورژن حاصل کرنا مشکل کام ہے۔ اس ٹٹوریل میں یہ اسٹرنگ پارس کرنے کا کوڈ پیش کیا جا رہا ہے جو دو مختلف جگہوں سے حاصل کر کے یکجا کیا گیا ہے۔ اصل ایپلی کیشن میں تو آپ یہ معلومات ڈیٹابیس یا کسی لاگ فائل میں محفوظ کریں گے، لیکن یہ اسکرپٹ اسی طرح چلانے پر اس کی ویلیوز براؤزر میں درج ذیل طریقے سے پرنٹ ہوں گی۔

پی ایچ پی میں صارف کے آپریٹنگ سسٹم اور براؤزر کی معلومات


کوڈ کی مختصر وضاحت

کوڈ میں کامنٹس کی لائنوں کے ساتھ نمبر دیے گئے ہیں، ان نمبروں کے اعتبار سے کوڈ کی وضاحت دیکھیں۔

  1. سب سے پہلے آپ وہ فنکشن دیکھ رہے ہیں جو تمام مطلوبہ ویلیوز پر مشتمل ایک اررے مہیا کرتا ہے۔ اس فنکشن میں پہلے PHP سے وہ اسٹرنگ حاصل کی گئی ہے جس میں براؤزر اور آپریٹنگ سسٹم کی معلومات موجود ہیں۔
  2. پھر ریگولر ایکسپریشنز کی مدد سے اس اسٹرنگ میں سے آپریٹنگ سسٹم کا نام اور اس کا ورژن نمبر حاصل کیا گیا ہے۔ اس میں آپ دیکھ سکتے ہیں کہ ونڈوز کے تمام ورژنز کے لیے ایک ہی نام NT مختلف نمبرز کے ساتھ استعمال ہوا ہے۔
  3. پھر اسٹرنگ سے براؤزر کا نام حاصل کیا گیا ہے۔
  4. پھر براؤزر کا ورژن نمبر حاصل کیا گیا ہے جو کہ قدرے پیچیدہ ہے، کیونکہ اسٹرنگ میں کبھی یہ نمبر براؤزر کے نام سے پہلے موجود ہوتا ہے اور کبھی بعد میں۔
  5. فنکشن کے آخر میں تمام حاصل کردہ ویلیوز ایک اررے کی شکل میں ریٹرن کر دی گئی ہیں۔
  6. اسکرپٹ کے آخر میں یہ فنکشن کال کیا گیا ہے اور اس میں سے حاصل ہونے والی ویلیوز کو HTML ٹیگز کے ساتھ مکس کر کے پرنٹ کر دیا گیا ہے۔

<?php

function getUserAgent() { 

        
// 1. Get the user agent string from php
        
$user_agent = (isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : ""); 
        
$browser_name "";
        
$platform "";
        
$browser_version "";

        
// 2. Get the platform (operating system + version)
        
if (preg_match("/linux/i"$user_agent)) {
                
$platform "Linux";
        } else if (
preg_match("/macintosh|mac os x/i"$user_agent)) {
                
$platform "Mac";
        } else if (
preg_match("/windows|win32/i"$user_agent)) {
                
$platform "Windows";
                if (
preg_match("/NT 6.2/i"$user_agent)) { 
                        
$platform .= " 8"
                } else if (
preg_match("/NT 6.2/i"$user_agent)) { 
                        
$platform .= " 8"
                } else if (
preg_match("/NT 6.3/i"$user_agent)) { 
                        
$platform .= " 8.1"
                } else if (
preg_match("/NT 6.1/i"$user_agent)) { 
                        
$platform .= " 7"
                } else if (
preg_match("/NT 6.0/i"$user_agent)) { 
                        
$platform .= " Vista"
                } else if (
preg_match("/NT 5.1/i"$user_agent)) { 
                        
$platform .= " XP"
                } else if (
preg_match("/NT 5.0/i"$user_agent)) { 
                        
$platform .= " 2000"
                }
                if (
preg_match("/WOW64/i"$user_agent) || preg_match("/x64/i"$user_agent)) { 
                        
$platform .= " (x64)"
                }
        }

        
// 3. Get the user agent (browser name)
        
$browser_keyword "";        
        if(
preg_match("/MSIE/i",$user_agent) && !preg_match("/Opera/i",$user_agent)) { 
                
$browser_name "Internet Explorer"
                
$browser_keyword "MSIE"
        } else if(
preg_match("/Firefox/i",$user_agent)) { 
                
$browser_name "Mozilla Firefox"
                
$browser_keyword "Firefox"
        } else if(
preg_match("/Chrome/i",$user_agent)) { 
                
$browser_name "Google Chrome"
                
$browser_keyword "Chrome"
        } else if(
preg_match("/Safari/i",$user_agent)) { 
                
$browser_name "Apple Safari"
                
$browser_keyword "Safari"
        } else if(
preg_match("/Opera/i",$user_agent)) { 
                
$browser_name "Opera"
                
$browser_keyword "Opera"
        } else if(
preg_match("/Netscape/i",$user_agent)) { 
                
$browser_name "Netscape"
                
$browser_keyword "Netscape"
        } 
        
        
// 4. Get the version number of the browser
        
$known = array("Version"$browser_keyword"other");
        
$pattern "#(?<browser>" join("|"$known) . ")[/ ]+(?<version>[0-9.|a-zA-Z.]*)#";
        
preg_match_all($pattern$user_agent$matches); 

        
// We will have two version numbers since we are not using "other" argument yet
        
$i count($matches["browser"]);
        if (
$i != 1) {
                
// See if the version number is before or after the name
                
if (strripos($user_agent,"Version") < strripos($user_agent$browser_keyword)){
                        
$browser_version $matches["version"][0];
                } else {
                        
$browser_version $matches["version"][1];
                }
        } else {
                
$browser_version $matches["version"][0];
        }
        
        
// If we don't have the version number of the browser
        
if ($browser_version == null || $browser_version == "") {
                
$browser_version "?";
        }
        
        
// 5. Return an array of parsed values
        
return array(
                
"user_agent_string" => $user_agent,
                
"platform" => $platform
                
"browser" => $browser_name,
                
"version" => $browser_version 
        
);




// 6. Get the values from getUserAgent() function and print them
$values getUserAgent();
print 
"<b>User agent string:</b> " $values["user_agent_string"] . "<br>";        
print 
"<b>Operating system:</b> " $values["platform"] . "<br>";        
print 
"<b>Browser:</b> " $values["browser"] . " " $values["version"] . "<br>";        

?>

Categories: