Отслеживание пользователей
Автор: | Артемьев Сергей Игоревич |
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-адрес, описание браузера и количество загрузок.
Конечно, в таком виде трекер практически бесполезен, но если добавить учёт имени страницы, учёт предыдущих страниц, даты входа и выхода, то получим вполне работоспособный инструмент для анализа текущей посещаемости сайта и популярности разделов.