كيفية تصميم نظام تتبع الزوار لموقع الويب الخاص بك
إذا كان لديك موقع على شبكة الانترنت، وربما كنت ترغب في معرفة من يزور موقع لك. قد ترغب في معرفة عدد الزوار، وأين هم من، وكيف أنها لم تحصل على موقع الويب الخاص بك، وما إلى ذلك هناك بعض الخيارات المتاحة على الانترنت تتبع، مثل غوغل تحليلات أو إذا كنت تستخدم خدمة استضافة أنها قد توفر لك بعض الإحصاءات . ولكن ما إذا كنت ترغب في تعقب الشخصية التي يظهر لك ما تحتاج فقط؟ في هذا البرنامج التعليمي سوف تظهر لك كيفية بناء واحد!
سوف تظهر لك أيضا كيفية إنشاء صفحة لعرض بعض الإحصاءات. هناك الكثير من الإحصاءات التي قد ترغب في عرضها باستخدام معلومات من قاعدة البيانات. سأريكم مثال صغير، والتي سوف تفعل ما يلي:
إذا كان لديك موقع على شبكة الانترنت، وربما كنت ترغب في معرفة من يزور موقع لك. قد ترغب في معرفة عدد الزوار، وأين هم من، وكيف أنها لم تحصل على موقع الويب الخاص بك، وما إلى ذلك هناك بعض الخيارات المتاحة على الانترنت تتبع، مثل غوغل تحليلات أو إذا كنت تستخدم خدمة استضافة أنها قد توفر لك بعض الإحصاءات . ولكن ما إذا كنت ترغب في تعقب الشخصية التي يظهر لك ما تحتاج فقط؟ في هذا البرنامج التعليمي سوف تظهر لك كيفية بناء واحد!
ما نحن ذاهبون لبناء اليوم؟
سأريكم كيفية بناء صغير PHP السيناريو تعقب الذي يحفظ المعلومات التالية حول زوار موقعك في قاعدة بيانات: عنوان IP الخاص بهم، وموقعها (البلد والمدينة) على أساس الملكية الفكرية الخاصة بهم، وتاريخ ووقت زيارتهم، وبعض معلومات عن المتصفح التي استخدموها، ونظام التشغيل، والمرجعية (إذا كانت النقر على وصلة على موقع آخر للحصول على يدكم، وسوف تعرف الموقع الذي أحالتهم)، وسلسلة الاستعلام الذي يبحثون عنه في حالة وأحالهم 1 محرك البحث. وسوف تظهر لك أيضا كيفية التحقق إذا كان الزائر كان بوت (هذه هي تطبيقات البرامج التي تعمل المهام الآلي عبر الإنترنت). سأريكم كيفية كتابة هذا السيناريو الصغيرة وأيضا صفحة مع بعض الإحصاءات من قاعدة البيانات.
أولا، نحن بحاجة إلى جدول في قاعدة البيانات للاحتفاظ معلومات حول الزوار. سوف نطلق عليه "تعقب".
سنحتاج الأعمدة التالية في الجدول: الهوية، والتاريخ، والوقت، والملكية الفكرية، البلد، المدينة، QUERY_STRING، http_referer، http_user_agent، isbot (وهذا سوف يعقد القيمة 1 هو المستخدم بوت و 0 خلاف ذلك).
وهنا يكمن الأمر SQL اللازمة لإنشاء الجدول:
1 | CREATE TABLE IF NOT EXISTS `tracker` ( |
2 | `id` int (11) NOT NULL auto_increment, |
3 | ` date ` date NOT NULL , |
4 | ` time ` time NOT NULL , |
5 | `ip` text NOT NULL , |
6 | `country` text NOT NULL , |
7 | `city` text NOT NULL , |
8 | `query_string` text NOT NULL , |
9 | `http_referer` text NOT NULL , |
10 | `http_user_agent` text NOT NULL , |
11 | `isbot` int (11) NOT NULL , |
12 | PRIMARY KEY (`id`) |
13 | ); |
التالي، وسوف نحتاج الى PHP السيناريو الصغيرة التي يكتشف كل المعلومات المطلوبة وإدراجها في قاعدة البيانات.
وهنا هي الأشياء التي سوف تحتاج إلى القيام به:
- الحصول على المعلومات اللازمة من الخادم
- العثور على موقع على أساس الملكية الفكرية عنوان
- معرفة ما اذا كان الزائر هو بوت
- إدراج كل شيء في database
وهنا رمز لاسترداد المعلومات من الملقم:
1 | $ip = $_SERVER [ 'REMOTE_ADDR' ]; |
2 | $query_string = $_SERVER [ 'QUERY_STRING' ]; |
3 | $http_referer = $_SERVER [ 'HTTP_REFERER' ]; |
4 | $http_user_agent = $_SERVER [ 'HTTP_USER_AGENT' ]; |
$_ملقم هو مجموعة من المعلومات التي تحتوي على مثل رؤوس الصفحات، والمسارات، والمواقع النصي. يتم إنشاء الإدخالات في هذه المجموعة من قبل خادم الويب. سنقوم حفظ الملكية الفكرية للزائر ($ _SERVER ['REMOTE_ADDR'])، والمرجع ($ _SERVER ['HTTP_REFERER'])، والمستخدم سلسلة الاستعلام لبحث ($ _SERVER ['QUERY_STRING'])، وبيانات حول زوار المتصفح ونظام التشغيل (SERVER ['HTTP_USER_AGENT']).
وظيفة لمعرفة ما اذا كان الزائر هو بوت يبدو مثل هذا:
1 | وظيفة is_bot() |
2 | { |
3 | $botlist = array ( "Teoma" , "alexa" , "froogle" , "Gigabot" , "inktomi" , |
4 | "looksmart" , "URL_Spider_SQL" , "Firefly" , "NationalDirectory" , |
5 | "Ask Jeeves" , "TECNOSEEK" , "InfoSeek" , "WebFindBot" , "girafabot" , |
6 | "crawler" , "www.galaxy.com" , "Googlebot" , "Scooter" , "Slurp" , |
7 | "msnbot" , "appie" , "FAST" , "WebBug" , "Spade" , "ZyBorg" , "rabaz" , |
8 | "Baiduspider" , "Feedfetcher-Google" , "TechnoratiSnoop" , "Rankivabot" , |
9 | "Mediapartners-Google" , "Sogou web spider" , "WebAlta Crawler" , "TweetmemeBot" , |
10 | "Butterfly" , "Twitturls" , "Me.dium" , "Twiceler" ); |
11 | foreach ( $botlist as $bot ) |
12 | { |
13 | if ( strpos ( $_SERVER [ 'HTTP_USER_AGENT' ], $bot ) !== false) |
14 | return true; |
15 | } |
16 | return false; |
17 | } |
لقد وجدت قائمة من السير. للتحقق من هو الزائر هو بوت، ونحن بحاجة إلى التحقق من $ _SERVER ['HTTP_USER_AGENT'] متغير.
معرفة تفاصيل موقع باستخدام عنوان IP هو قليلا أكثر صعوبة. سنحتاج لتقديم طلب إلى خادم يرى أن هذا النوع من المعلومات، والحصول على نتيجة من الخادم (يرسل ملف XML)، تحليل النتائج والحصول على أسماء البلدان والمدن.
The php code looks like this:
1 | $url = 'http://ipinfodb.com/ip_query.php?ip=' . $ip ; |
2 | $init = curl_init( $url ); |
3 | curl_setopt( $init , CURLOPT_RETURNTRANSFER, true); |
4 | curl_setopt( $init , CURLOPT_TIMEOUT, 10); |
5 | $exec = curl_exec( $init ); |
6 | $info = curl_getinfo( $init ); |
7 | curl_close( $init ); |
8 | if ( $info [ 'http_code' ] === 200) |
9 | { |
10 | / / تحليل XML والحصول على البلد والمدينة من EXEC |
11 | $objDOM = new DOMDocument(); |
12 | $objDOM ->loadXML( $exec ); |
13 |
14 | $country1 = $objDOM ->getElementsByTagName( "CountryName" ); |
15 | $country = $country1 ->item(0)->nodeValue; |
16 | $city1 = $objDOM ->getElementsByTagName( "City" ); |
17 | $city = $city1 ->item(0)->nodeValue; |
18 | } |
نحن أولا تعريف عنوان الموقع من الخادم (http://ipinfodb.com/ip_query.php)، وإرسال طلب إلى أنه مع عنوان IP الزوار. ونحن في طريقنا لاستخدام حليقة لإرسال طلب إلى ملقم واسترداد النتيجة. حليقة هو أداة لنقل البيانات باستخدام بروتوكولات مختلفة. نحن تهيئة أول جلسة، تعيين معلمات قليلة ومن ثم إرسال الطلب. سيتم حفظ النتيجة في المتغير $ EXEC. النتيجة من الخادم هو ملف XML. نحن بحاجة إلى تحليل الأمر وتحصل على قيمتين، البلد والمدينة. وتوجد هناك القيم في "CountryName" و "المدينة" به. نحن في طريقنا للاستخدامDOMDocument class to parse the xml file.
وضعنا المتغير $ isbot إلى 1 إذا كان الزائر هو بوت و 0 خلاف ذلك. وسوف نتمكن من إنقاذ هذا المتغير في قاعدة البيانات.
1 | if (is_bot()) |
2 | $isbot = 1; |
3 | else |
4 | $isbot = 0; |
We’ll get the system date and time
1 | $date = date ( "Y-m-d" ); |
2 | $time = date ( "H:i:s" ); |
لدينا استرجاع جميع المعلومات التي يريد! التالي، سيكون لدينا لإضافة كافة المعلومات في قاعدة البيانات.
نحن بحاجة لتعيين خادم قاعدة البيانات، اسم قاعدة البيانات، اسم المستخدم وكلمة المرور، ثم الاتصال بخادم قاعدة البيانات وقاعدة البيانات.
1 | $server = "SERVER NAME" ; |
2 | $username = "USER NAME" ; |
3 | $password = "PASSWORD" ; |
4 | $database = "DATABASE NAME" ; |
5 | $connId = mysql_connect( $server , $username , $password ) or die ( "Cannot connect to server" ); |
6 | $selectDb = mysql_select_db( $database , $connId ) or die ( "Cannot connect to database" ); |
Then, we run the query to insert the information into the tracker table.
1 | $query = "insert into `tracker` (`country`,`city`,` date `, `time`, `ip`, `query_string`, `http_referer`, `http_user_agent`, `isbot`) |
2 | values ( '$country' , '$city' , '$date' , '$time' , '$ip' , '$query_string' , '$http_referer' , '$http_user_agent' , $isbot )"; |
3 | $result = mysql_query( $query ); |
يتم الآن حفظ كل المعلومات أردنا في قاعدة البيانات!
كل ما نحتاج الى القيام به هو الآن يشمل هذا البرنامج النصي في الصفحة الرئيسية للموقع، ويمكننا تتبع الزوار! ويمكن أن نضيف أيضا هذا السيناريو إلى الصفحات الأخرى للموقع، إضافة متغير آخر لعقد اسم الصفحة وإدراج هذا في قاعدة البيانات أيضا. بهذه الطريقة، سوف نعرف بالضبط ما لم صفحات للمستخدم تصفح على الموقع.
سوف تظهر لك أيضا كيفية إنشاء صفحة لعرض بعض الإحصاءات. هناك الكثير من الإحصاءات التي قد ترغب في عرضها باستخدام معلومات من قاعدة البيانات. سأريكم مثال صغير، والتي سوف تفعل ما يلي:
- show the number of unique visitors
- show a table with all the visitors
The code for this is shown below.
1 | < html > |
2 |
3 | < head > |
4 | < title >Statistics</ title > |
5 | </ head > |
6 |
7 | < body > |
8 |
9 | < h1 >Statistics</ h1 > |
10 |
11 | < br />< br /> |
12 |
13 | The number of unique visitors is: |
14 | <? php |
15 | // connect to the database |
16 |
17 | // fill in your databasa data here! |
18 | $ server = "SERVER NAME" ; |
19 | $ username = "USER NAME" ; |
20 | $ password = "PASSWORD" ; |
21 | $ database = "DATABASE NAME" ; |
22 |
23 | $ connId = mysql_connect ($server,$username,$password) or die("Cannot connect to server"); |
24 | $ selectDb = mysql_select_db ($database,$connId) or die("Cannot connect to database"); |
25 |
26 | // get the number of unique visitors |
27 | $ query = "select distinct ip from tracker" ; |
28 | $ result = mysql_query ($query); |
29 | $ number = mysql_num_rows ($result); |
30 |
31 | // show the number |
32 | echo $number; |
33 | ?> |
34 |
35 | < br />< br /> |
36 |
37 | Site's visitors: |
38 | < br />< br /> |
39 | < table border = "1" > |
40 | < tr > |
41 | < th >Id</ th > |
42 | < th >IP</ th > |
43 | < th >Country</ th > |
44 | < th >City</ th > |
45 | < th >Referer</ th > |
46 | < th >Is a bot?</ th > |
47 | </ tr > |
48 | <? php |
49 | // get the list of visitors |
50 | $ query = "select * from tracker" ; |
51 | $ result = mysql_query ($query); |
52 | while ($ row = mysql_fetch_array ($result)) |
53 | { |
54 | ?> |
55 | < tr > |
56 | < td ><? php echo $row['id'];?></ td > |
57 | < td ><? php echo $row['ip'];?></ td > |
58 | < td ><? php echo $row['country'];?></ td > |
59 | < td ><? php echo $row['city'];?></ td > |
60 | < td ><? php echo $row['http_referer'];?></ td > |
61 | < td ><? php if ($row['isbot']==1) echo "yes"; else echo "no";?></ td > |
62 | </ tr > |
63 | <? php |
64 | } |
65 | ?> |
66 | </ table > |
67 |
68 | </ body > |
69 |
70 | </ html > |
ما فعلناه كان لاسترجاع المعلومات من قاعدة البيانات باستخدام المناسبة استعلامات SQL وطباعة المعلومات على الشاشة.:
وهذا هو عن ذلك! لدينا الآن تعقب زائر!
Iو كانت لديك أسئلة أو تعليقات أو حاجة مزيد من التفاصيل عن شيء، اسمحوا لي ان اعرف. سأكون سعيدا للمساعدة!
M3
ردحذف