اس تحریر کا مقصد یہ ہے کہ اگر آپ PHP کی مدد سے کوئی ویب سائیٹ یا پھر ویب ایپلی کیشن تیار کر رہے ہیں تو اس میں یہ صلاحیت بھی شامل کردیں کہ وہ ضروری حد تک شماریات اکٹھی کر سکے۔ یعنی یہ معلوم کر سکے کہ یہ ویب سائیٹ کس تعداد میں وزٹ کی جا رہی ہے، کن اوقات میں اس کا زیادہ استعمال ہو رہا ہے، اس کے کونسے صفحات زیادہ دیکھے جا رہے ہیں، اور اسے کونسے براؤزرز، آپریٹنگ سسٹمز اور ڈیوائسز پر وزٹ کیا جا رہا ہے وغیرہ۔ اس ٹٹوریل کا مقصد Stats کی باقاعدہ ایپلی کیشن بنانا نہیں ہے، بلکہ اس کا مقصد یہ دیکھنا ہے کہ PHP کے سرور ویری ایبلز میں جو معلومات موجود ہوتی ہیں ان کی مدد سے ہم اپنی ویب سائیٹ یا ویب ایپلی کیشن کے لیے شماریات کا ڈیٹا کیسے اکٹھا کر سکتے ہیں۔
PHP کا کوئی اسکرپٹ جب اپنے کام میں مصروف ہوتا ہے تو اس دوران PHP کی مختلف سیٹنگز کی معلومات Associative arrays میں دستیاب ہوتی ہیں، تاکہ اسکرپٹ میں انہیں حسب ضرورت استعمال کیا جا سکے۔ یہ ایسے ارریز ہوتے ہیں جن میں ناموں کے تحت ویلیوز محفوظ کی جاتی ہیں۔ اس کے برعکس Indexed arrays میں نمبرز کے تحت ویلیوز محفوظ کی جاتی ہیں۔ اس ٹٹوریل میں ہم یہ دیکھیں گے کہ []SERVER_$ اررے میں موجود معلومات میں سے شماریات کا ڈیٹا کیسے حاصل کیا جا سکتا ہے۔
شماریات کا یہ ڈیٹا جو ہم اکٹھا کریں گے، اسے فائلز میں بھی محفوظ کیا جا سکتا ہے اور ڈیٹابیس میں بھی۔ فائلز کی شکل میں شماریات کا ڈیٹا محفوظ کرنے کے لیے یوں کیا جا سکتا ہے کہ ہر مہینے کی شماریات کے لیے الگ فائل بنائی جائے۔ اس فائل میں ایک ترتیب سے ہر اس درخواست کا ریکارڈ رکھا جائے جو کسی صارف نے ویب سرور کی طرف بھیجی ہے۔ یعنی ایک لائن میں ایک درخواست کے متعلق مکمل ریکارڈ موجود ہو۔ ویلیوز کے درمیان تقسیم (Separator) کے نشان کے طور پر پائپ سائن، ٹیب، کوما یا ان کے علاوہ کوئی خاص نشان استعمال کیا جا سکتا ہے۔ لیکن اس طریقے سے فائل میں محفوظ کیا گیا شماریات کا ڈیٹا پڑھنا مشکل ہوتا ہے۔ اس مقصد کے لیے خاص طور پر PHP کا ایک اسکرپٹ لکھنے کی ضرورت پیش آتی ہے جو اس تمام ڈیٹا کو Parse کر کے ایک ترتیب کے ساتھ دکھائے تاکہ شماریات کا یہ ڈیٹا با آسانی پڑھا جا سکے۔
جبکہ شماریات کے لیے ڈیٹابیس استعمال کرنے کا فائدہ یہ ہے کہ اس میں ڈیٹا محفوظ کرنا اور ڈیٹا حاصل کرنا نسبتاً آسان ہے۔ نیز ایک ہی ڈیٹابیس کو ایک سے زائد ویب سائیٹس یا ایپلی کیشنز کی شماریات کے لیے استعمال کیا جا سکتا ہے، یوں مکمل ڈیٹا ایک ہی جگہ پر دستیاب ہوگا۔ اور اس ڈیٹابیس میں سے SQL اسٹیٹمنٹس کے ذریعے حسب ضرورت رپورٹس حاصل کی جا سکتی ہیں۔ بہرحال یہ ایپلی کیشن کی ضرورت پر منحصر ہے کہ شماریات کا ڈیٹا محفوظ کرنے کے لیے کونسا طریقہ اختیار کیا جائے۔
آئیں PHP کی مدد سے شماریات کا ڈیٹا حاصل کرنے کی مختصر مثالیں دیکھتے ہیں۔
صارف ویب سائیٹ پر براہ راست آیا ہے یا کسی ویب پیج کی طرف سے بھیجا گیا ہے؟
اگر صارف کسی ویب پیج میں موجود لنک پر کلک کر کے ویب سائیٹ پر پہنچا ہے تو پھر []SERVER_$ اررے میں HTTP_REFERER کی ویلیو موجود ہوگی۔ اور اگر سرور اررے میں یہ ویلیو نہیں موجود تو اس کا مطلب یہ ہے کہ صارف براہ راست اس ویب پیج پر پہنچا ہے۔ براہ راست پہنچنے کا مطلب یہ نہیں کہ صارف نے لازمی طور پر یہ ایڈریس براؤزر کی ایڈریس بار میں ٹائپ کیا ہو۔ بلکہ ممکن ہے اس نے بک مارک کیا ہو، یا پھر ڈیسک ٹاپ پر اس ویب پیج کا شارٹ کٹ بنایا ہو۔ درج ذیل مثال میں پہلے ()isset فنکشن کی مدد سے یہ چیک کیا گیا ہے کہ کیا سرور اررے میں ریفرر کی ویلیو موجود ہے یا نہیں، اگر موجود ہے تو اس ویب پیج کا ایڈریس پرنٹ کیا گیا ہے جس کے ذریعے صارف ایپلی کیشن کے ویب پیج پر پہنچا ہے۔ اگر یہ ویلیو موجود نہیں تو پھر یہ بتایا گیا ہے کہ صارف اس ویب پیج پر براہ راست پہنچا ہے۔
<?php
if (isset($_SERVER['HTTP_REFERER'])) {
print "Referred by:<br>" . $_SERVER['HTTP_REFERER'];
} else {
print "A direct visit";
}
?>
صارف کس سرچ انجن کی طرف سے بھیجا گیا ہے؟
ریفرر کی ویلیو سے یہ بھی معلوم کیا جا سکتا ہے کہ صارف کس سرچ انجن کی طرف سے بھیجا گیا ہے۔درج ذیل مثال میں تین بڑے سرچ انجنز کا پتہ لگایا گیا ہے۔ اگر آپ مزید سرچ انجنز دیکھنا چاہیں تو بس یہ کرنا ہوگا کہ ان کے ڈومین نیم کی ویلیو HTTP_REFERER میں سے تلاش کر لی جائے۔
<?php
if (isset($_SERVER['HTTP_REFERER'])) {
$referer = $_SERVER['HTTP_REFERER'];
if (strpos($referer, "google.com") !== false) {
print "Sent by Google search engine.";
} else if (strpos($referer, "yahoo.com") !== false) {
print "Sent by Yahoo search engine.";
} else if (strpos($referer, "bing.com") !== false) {
print "Sent by Bing search engine.";
}
} else {
print "A direct visit";
}
?>
سرچ انجن پر کن الفاظ کی مدد سے یہ ویب سائیٹ تلاش کی گئی؟
درج ذیل مثال میں صرف گوگل پر استعمال کیے گئے وہ الفاظ معلوم کیے گئے ہیں جنہیں صارف نے تلاش کے لیے استعمال کیا اور گوگل نے سرچ کے نتائج میں ہماری ویب سائیٹ کا ویب پیج شامل کیا۔ اسی طریقے سے دیگر سرچ انجنز کے Key phrases معلوم کیے جا سکتے ہیں۔
<?php
$key_phrase = "";
if (isset($_SERVER['HTTP_REFERER'])) {
if (strpos($_SERVER['HTTP_REFERER'], "google.com") !== false) {
$query_string = explode("&", $_SERVER['QUERY_STRING']);
foreach($query_string as $q) {
if (strpos($q, "q=") !== false) {
$q = str_replace("q=", "", $q);
$q = str_replace("+", " ", $q);
$key_phrase = $q;
break;
}
}
}
}
print $key_phrase;
?>
صارف نے کونسا ڈومین وزٹ کیا ہے؟
ویسے تو مجھے معلوم ہے کہ میری ویب سائیٹ کا ڈومین کیا ہے۔ لیکن اگر میں مختلف ویب سائیٹس کی شماریات ایک ہی ڈیٹابیس میں محفوظ کرنا چاہتا ہوں تو ڈومین نیم کی ویلیو بھی ڈیٹابیس میں محفوظ کرنا ہوگی۔ اس ویلیو کی مدد سے یہ فرق کیا جا سکے گا کہ کونسی شماریات کس ویب سائیٹ کی ہیں۔
<?php
print "Domain visited:<br>" . $_SERVER['SERVER_NAME'];
?>
صارف نے کونسا ویب پیج وزٹ کیا ہے؟
درج ذیل مثال میں اس ویب پیج کا ایڈریس حاصل کیا جا رہا ہے جو صارف نے ویب سائیٹ پر وزٹ کیا ہے۔
<?php
print "Resource (web page) visited:<br>" . $_SERVER['REQUEST_URI'];
?>
یہ ویب پیج کس وقت وزٹ کیا گیا ہے؟
درج ذیل مثال میں وہ تاریخ اور وقت پرنٹ کیا جا رہا ہے جب صارف نے یہ ویب پیج وزٹ کیا۔ شماریات کے نقطۂ نظر سے یہ ویلیو بہت اہم ہے، اس سے متعدد باتیں معلوم کی جا سکتی ہیں، مثلاً:
- وقت کی ویلیو سے یہ معلوم کیا جا سکتا ہے کہ صارف نے سب سے پہلے اور سب سے آخر میں کونسا ویب پیج وزٹ کیا۔ اس سے یہ معلوم کیا جا سکتا ہے کہ صارف ویب سائیٹ پر کتنی دیر تک ٹھہرا۔
- صارف ویب سائیٹ کے ایک ویب پیج سے دوسرے پر پہنچتا ہے تو درمیان کے وقت کا حساب لگا کر یہ دیکھا جا سکتا ہے کہ کس ویب پیج پر صارف نے کتنا وقت گزارا۔ اس سے ویب سائیٹ کے ویب پیجز کی اوسط نکالی جا سکتی ہے، اور یہ معلوم کیا جا سکتا ہے کہ کن ویب پیجز کے مواد صارفین کی زیادہ توجہ حاصل کر رہے ہیں۔
- یہ معلوم کیا جا سکتا ہے کہ صارف نے ویب سائیٹ ایک مرتبہ وزٹ کی ہے یا ایک سے زائد مرتبہ۔ اگر صارف کی وزٹس کے درمیان کچھ گھنٹوں کا یا دنوں کا فرق ہے تو اس کا مطلب ہے کہ صارف نے ایک سے زیادہ مرتبہ ویب سائیٹ وزٹ کی ہے۔ اس سے مجھے Unique اور Returning صارفین کی ویلیو مل سکتی ہے۔ یعنی کتنے صارفین صرف ایک مرتبہ ویب سائیٹ پر آئے ہیں اور کتنے ایک سے زائد مرتبہ۔
- یہ معلوم کیا جا سکتا ہے کہ چوبیس گھنٹے کے مختلف اوقات میں ویب سائیٹ پر کس وقت کتنی ٹریفک ہوتی ہے۔
<?php
date_default_timezone_set('Asia/Karachi');
print "Time of visit:<br>"
. date("Y-m-d H:i:s", $_SERVER['REQUEST_TIME']);
?>
وزٹ کے لیے کونسا آپریٹنگ سسٹم اور براؤزر استعمال کیا گیا ہے؟
درج ذیل مثال میں وہ معلومات پرنٹ کی جا رہی ہیں جن کی مدد سے وزٹ کرنے والے صارف کے آپریٹنگ سسٹم اور براؤزر کا پتہ چلایا جا سکتا ہے۔ اگر آپ اس ویری ایبل میں موجود ٹیکسٹ کو Parse کر کے ویلیوز الگ کرنا چاہیں تو اس کے لیے اس کے لیے یہ ٹٹوریل دیکھیں۔
<?php
print "Operating system and browser of visitor:<br>" . $_SERVER['HTTP_USER_AGENT'];
?>
صارف کا IP ایڈریس کیا ہے؟
درج ذیل مثال میں ویب سائیٹ وزٹ کرنے والے صارف کا آئی پی ایڈریس پرنٹ کیا گیا ہے۔ یہ آئی پی ایڈریس اس وقت کارآمد ہو سکتا ہے جب میں کوئی جغرافیائی ڈیٹابیس استعمال کروں۔ ایسی ڈیٹابیس جس میں سے اس آئی پی ایڈریس کی مدد سے یہ معلوم کیا جا سکے کہ صارف کس ملک اور شہر سے تعلق رکھتا ہے۔ قیمتاً ایسی ڈیٹابیس فراہم کرنے والی مختلف ویب سائیٹس انٹرنیٹ پر موجود ہیں۔ اگر آپ کہیں سے ایسی کوئی مفت ڈیٹابیس حاصل کریں تو تسلی کر لیں کہ کم از کم اس کا وہ ڈیٹا درست ہے جو آپ کو درکار ہے۔
<?php
print "IP address of visitor:<br>" . $_SERVER['REMOTE_ADDR'];
?>
Modified: Tue, 02/13/2018 - 18:18