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