HTML, Excel, Word, SEOPHP курс для чайников ⇒ Отслеживание пользователей

PHP для "чайников"

Инструменты
Выбираем IDE
Выбираем Web-сервер
Выбираем СУБД
Структура языка PHP
Первый шаг
Синтаксис
Типы данных
Переменные и константы
Операторы
Выражения
Управляющие структуры
Функции
Классы
Исключения
Ошибки
Массивы
Глобальные массивы
Cookies
Сессии
Загрузка файлов
Работа с файлами
Работа с файлами на диске
Работа с данными в файле
Пример управления файлами
Работа с базами данных
Подключение
Анализ результатов
Выполнение запросов
Отключение
Пример: отслеживание пользователей
Работа в сети
Отправка почты
Безопасность
HTTP-аутентификация
Защита логином и паролем
Автоматизация
Регулярные выражения в PHP
Интеграция
PHP и JavaScript



Отслеживание пользователей


Автор: Артемьев Сергей Игоревич
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-адрес, описание браузера и количество загрузок.

Конечно, в таком виде трекер практически бесполезен, но если добавить учёт имени страницы, учёт предыдущих страниц, даты входа и выхода, то получим вполне работоспособный инструмент для анализа текущей посещаемости сайта и популярности разделов.

 



В начало страницы



В начало страницы