Îòñëåæèâàíèå ïîëüçîâàòåëåé
Àâòîð: | Àðòåìüåâ Ñåðãåé Èãîðåâè÷ |
ICQ: | 438856621 |
email: | _spin_@bk.ru |
Äîâîëüíî ÷àñòî ïðè ðàçðàáîòêå è ñîïðîâîæäåíèè ñàéòîâ âîçíèêàåò íåîáõîäèìîñòü îòñëåäèòü êîëè÷åñòâî ïîñåùåíèé îòäåëüíûõ ñòðàíèö è íåêîòîðûå ïàðàìåòðû ïîñåòèòåëåé.  ýòîì ïðèìåðå ìû ñäåëàåì ñêðèïò, àâòîìàòè÷åñêè ðåãèñòðèðóþùèé â áàçå äàííûõ IP-àäðåñà è òèïû áðàóçåðîâ ïîëüçîâàòåëåé.
Èòàê, ñêðèïò ïåðåä âàìè:
<?php $server = 'localhost'; $user = 'root'; $password = 'root'; $database = 'mybase'; // ïîäêëþ÷àåìñÿ ê ñåðâåðó $dblink = mysql_connect($server, $user, $password); if(!$dblink) die('Îøèáêà ïîäêëþ÷åíèÿ ê ñåðâåðó:' . mysql_error($dblink)); // âûáèðàåì áàçó äàííûõ if(!mysql_select_db($database)) die('Îøèáêà ïîäêëþ÷åíèÿ ê áàçå äàííûõ:' . mysql_error($dblink)); $sessid = session_id(); // ïîëó÷àåì àäðåñ ïîëüçîâàòåëÿ $ip = isset($_SERVER['REMOTE_ADDR'])? $_SERVER['REMOTE_ADDR']:''; // ïîëó÷àåì îïèñàíèå áðàóçåðà $agent = isset($_SERVER['HTTP_USER_AGENT'])? substr($_SERVER['HTTP_USER_AGENT'], 0, 99):''; // ôîðìèðóåì çàïðîñ íà âñòàâêó äàííûõ $sql = "INSERT user_tracker (session_id, enter_dt, user_ip, user_agent) VALUES ('$sessid', NOW(), '$ip', '$agent')"; // âûïîëíÿêì çàïðîñ è ïðîâåðÿåì ðåçóëüòàò $qry = mysql_query($sql, $dblink); if(!$qry) { die('Îøèáêà âûïîëíåíèÿ çàïðîñà' . mysql_error($dblink)); } // íè÷åãî íå âûâîäèì, ÷òîáû // íå ìåøàòü âûâîäó îñíîâíîé ñòðàíèöû ?>
Ýòîò ñêðèïò íåîáõîäèìî ñîõðàíèòü ïîä èìåíåì tracker.php è âêëþ÷àòü ïåðâîé ñòðîêîé â êîä âñåõ ñòðàíèö, ïîñåùåíèå êîòîðûõ âû õîòèòå îòñëåæèâàòü.
<?php include("tracker.php") ?> <html> ....
Òåïåðü ïðè êàæäîé çàãðóçêå ñòðàíèöû â áàçó äàííûõ áóäåò äîáàâëÿòüñÿ ñîîòâåòñòâóþùàÿ çàïèñü î äàííûõ ïîëüçîâàòåëÿ. Íî ïðîñòî ïðîñìàòðèâàòü çàïèñè - äåëî óòîìèòåëüíîå è ìàëîèíôîðìàòèâíîå. ×òîáû ïîëó÷èòü ñâîäíóþ ñòàòèñòèêó ñäåëàåì åù¸ îäèí ñêðèïò, íà ýòîò ðàç äëÿ èçâëå÷åíèÿ è îòîáðàæåíèÿ äàííûõ.
<?php $server = 'localhost'; $user = 'root'; $password = 'root'; $database = 'mybase'; // ïîäêëþ÷àåìñÿ ê ñåðâåðó $dblink = mysql_connect($server, $user, $password); if(!$dblink) die('Îøèáêà ïîäêëþ÷åíèÿ ê ñåðâåðó:' . mysql_error($dblink)); // âûáèðàåì áàçó äàííûõ if(!mysql_select_db($database)) die('Îøèáêà ïîäêëþ÷åíèÿ ê áàçå äàííûõ:' . mysql_error($dblink)); // âûáèðàåì íåîáõîäèìûå äàííûå ñ // îäíîâëåìåííîé ãðóïïèðîâêîé $sql = "SELECT user_ip, user_agent, COUNT(user_agent) cnt FROM user_tracker GROUP BY user_ip, user_agent ORDER BY user_ip, user_agent"; // âûïîëíÿåì çàïðîñ è ïðîâåðÿåì ðåçóëüòàò $qry = mysql_query($sql, $dblink); if(!$qry) { die('Îøèáêà âûïîëíåíèÿ çàïðîñà' . mysql_error($dblink)); } // ïðîâåðÿåì íàëè÷èå çàïèñåé $empty = mysql_num_rows($qry); // äàëüøå ïðè ïîìîùè PHP-âñòàâîê â HTML-êîä // âûâîäèì ëèáî òàáëèöó ñ çàïèñÿìè, // ëèáî ñîîáùåíèå îá îòñóòñòâèè çàïèñåé ?> <html> <head> <title>Îò÷¸ò</title> </head> <body> <?php if($empty == 0){ ?> <h1>Òàáëèöà ëîãîâ ïóñòà</h1> <?php } else { ?> <table border="1"> <tr> <td>IP-àäðåñ ïîëüçîâàòåëÿ</td> <td>Áðàóçåð ïîëüçîâàòåëÿ</td> <td>Êîëè÷åñòâî ïðîñìîòðîâ</td> </tr> <?php $row = mysql_fetch_assoc($qry); while($row){?> <tr> <td> <?php echo $row["user_ip"];?> </td> <td> <?php echo $row["user_agent"];?> </td> <td> <?php echo $row["cnt"];?> </td> </tr> <?php $row = mysql_fetch_assoc($qry);?> <?php }?> </table> <?php mysql_free_result($qry); mysql_close($dblink); }?> </body> </html>
Ñîõðàíèòå ýòî ñêðèïò â ôàéëå report.php è ìîæíî ïðèñòóïàòü ê òåñòèðîâàíèþ.
Ïåðåõîäèì ïî àäðåñó http://mysite/tracker.php è ïàðó ðàç îáíîâëÿåì ñòðàíèöó. Ïîñëå ýòîãî ïåðåõîäèì íà ñòðàíèöó îò÷¸òîâ ïî àäðåñó http://mysite/report.php è âèäèì òàáëèöó, â êîòîðîé îòìå÷åíû íàø IP-àäðåñ, îïèñàíèå áðàóçåðà è êîëè÷åñòâî çàãðóçîê.
Êîíå÷íî, â òàêîì âèäå òðåêåð ïðàêòè÷åñêè áåñïîëåçåí, íî åñëè äîáàâèòü ó÷¸ò èìåíè ñòðàíèöû, ó÷¸ò ïðåäûäóùèõ ñòðàíèö, äàòû âõîäà è âûõîäà, òî ïîëó÷èì âïîëíå ðàáîòîñïîñîáíûé èíñòðóìåíò äëÿ àíàëèçà òåêóùåé ïîñåùàåìîñòè ñàéòà è ïîïóëÿðíîñòè ðàçäåëîâ.