Php - Получение страны-посетителя от их IP-адресов. Создаем базу данных

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

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

Верстайте на заказ и получайте деньги.

Бесплатный курс "Сайт на WordPress"

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

*Наведите курсор мыши для приостановки прокрутки.

Назад Вперед

Счетчик посещений сайта своими руками на PHP и MySQL

В этом уроке мы с вами рассмотрим, как можно сделать простой счетчик посещений для вашего сайта. Пример мы будем реализовывать на PHP с использованием базы данных.

Понятно, что сейчас существует множество готовых решений - начиная от liveinternet и mail.ru , и заканчивая Яндекс.Метрикой.

Все эти сервисы предоставляют множество различной статистической информации, однако меня все равно периодически просят рассказать, как можно создать пусть даже очень простой, но свой собственный счетчик посещений сайта.

Мы не будем фиксировать десятки и сотни параметров, как это делают монстры, вроде Яндекса. Я покажу вам сам принцип создания счетчика, а вы, при желании, сможете туда добавить больше функций, если это будет необходимо.

Все исходники, используемые в процессе урока, приложены в архив вместе с видеоуроком.

Вы можете просмотреть этот урок прямо сейчас, либо скачать его себе на компьютер по ссылке выше.

Под видео вы найдете сокращенную текстовую версию для этого видеоурока.



Краткий обзор урока (все подробности смотрите в видео):

Что нам понадобится?

1. 4 практически идентичных файла, играющих роли разных страниц сайта (index.php, contacts.php, about.php и uslugi.php)
2. Файл.htaccess для задания кодировки сервера в значение UTF-8
3. Папка css с файлом стилей. Там прописано немного простейших стилей для наших страниц
4. Папка inc с подключаемыми файлами. Их три:
- файл подключения к базе данных
- Файл, который будет подключаться в нужном месте страницы для вывода счетчика на экран
- Основной скрипт, в котором прописана логика работы счетчика
5. Папка admin с файлом index.php. В этом файле мы сможем просмотреть статистику посещений сайта


Как что работает?

1. Создаем проект в Денвере (либо на реальном сервере)

Я создал в Денвере хост с именем statistic , а в папке www находятся все файлы сайта.


2. Создаем базу данных

Давайте перейдем к созданию базы, где у нас будет лежать вся информация. Назовем ее stats и создадим в ней две таблицы.


Если вы не хотите вручную создавать таблицы, то можете воспользоваться дампом базы (приложен в дополнительных материалах) и выполнить SQL-запрос на вкладке SQL после создания базы.


Итак, создаем первую таблицу . Назовем ее ips - в ней будут храниться идентификаторы IP-адресов и сами IP-адреса посетителей сайта.

В таблице будут 2 поля:

Id_id (int (12), первичный ключ, автоинкремент)- идентификатор IP-адреса;
- ip_address (varchar (50)) - сам IP-адрес посетителя.

В таблице будут 4 поля:

visit_id (int (12), первичный ключ, автоинкремент) - идентификатор визита;
date (date) - дата визита;
hosts int(12) - количество хостов (уникальных посещений);
views int(12) - количество хитов (просмотров страниц).

В итоге база будет выглядеть вот так:


3. Базовые положения

Теперь, когда база данных создана, можно перейти к нескольким положениям, от которых мы будем отталкиваться при написании скрипта:

1. Определять уникального посетителя мы будем по IP-адресу. 1 IP-адрес равен 1 уникальному посетителю (хосту).

2. Заходы в течение 1 дня с одним и тем же IP-адресом не увеличивают количество уникальных посетителей в этот день.

3. Любой заход на сайт в течение суток увеличивает счетчик посещений (хитов) на 1 (вне зависимости от того, совершается ли он с уникального за сегодня IP-адреса или нет).

4. Начало суток мы будем определять следующим образом: когда человек заходит на сайт, мы будем делать проверку, существуют ли в таблице visits какие-либо записи за сегодняшнюю дату. Если нет, значит текущий посетитель является первым посетителем в данных сутках.

5. Раз в сутки идет очистка таблицы с IP-адресами для того, чтобы мы могли заносить в нее IP-адреса уже текущего дня и собирать статистику именно по сегодняшним посещениям сайта (делается это как раз по факту обнаружения того, что к нам пожаловал первый в текущих сутках посетитель).

4. Пишем файлы страниц сайта (index.php, contacts.php, about.php и uslugi.php)

Поскольку все 4 файла страниц сайта практически идентичны, мы рассмотрим только страницу index.php . Остальные три страницы (contacts.php, about.php и uslugi.php ) отличаются только тэгами title и h2 , в которых написаны другие названия страниц.

Итак, файл index.php :

Главная

Главная страница

В самом начале мы подключаем файл сount.php , который содержит всю логику работы счетчика.

В нижей части, перед закрывающим тэгом body мы подключаем файл show_stats.php , в котором содержится сам код счетчика, т.е. в этом файле уже формируется непосредственно то, что мы будем выводить на экран.

Т.е. на каждой странице сайта у нас будет выводиться счетчик, и будет указано, сколько было за сегодня уникальных посетителей и просмотров. Этот файл мы разберем позже.

5. Пишем файл стилей (style.css)

#nav{ padding-left: 0px; } #nav li{ display: inline; margin: 5px; padding: 5px; font-family: Verdana; font-size: 15px; background-color: #F1EEF7; border: 1px solid silver; } #nav li a{ text-decoration: none; } #nav li:hover{ background-color: #8D93EF; }

Стили, как вы видите, очень простые. Мы задаем отступы, размер и гарнитуру шрифта, убираем подчеркивание для ссылок в меню и меняем цвет фона при наведении курсора мыши на элемент списка.

Кроме того, мы используем свойство display со значением inline для того, чтобы наше меню приняло горизонтальный, а не вертикальный вид.

6. Пишем файл.htaccess

На всякий случай создаем в корне сайта файл .htaccess с одной единственной директивой для задания кодировки UTF-8:

AddDefaultCharset UTF-8

Данный шаг может оказаться излишним, если кодировка сервера уже была установлена в это значение.

7. Подключаемся к базе данных (db.php)

В файле db.php указаны параметры подключения к базе данных - хост, имя базы, логин и пароль.

В этом же файле выполняется непосредственно соединение, а идентификатор соединения заносится в переменную $db . В случае ошибки выводится сообщение о невозможности подключиться к базе.

7. Пишем основной файл с логикой (count.php)

Ниже представлен его код, который мы вкратце разберем:

Итак, сначала мы подключаем файл bd.php , обеспечивающий связь с базой данных, после чего начинаем писать основной код.

Перво-наперво мы получаем из глобального массива $_SERVER IP-адрес посетителя и сохраняем текущую дату.

Дата нам необходима для того, чтобы проверить, были ли уже за сегодня какие-то посещения, или нет - это как раз наш следующий шаг.

В первом случае (если посещений еще не было) и текущий посетитель является первым в этих сутках, мы производим очистку таблицы с IP-адресами.

Это нужно нам для того, чтобы начать сбор статистики уже именно за сегодняшний день.

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

Второй вариант - когда посещения сегодня уже были .

В этом случае мы проверяем, есть ли уже в базе IP-адрес, с которого происходит обращение, т.к. нам нужно учитывать лишь уникальные IP-адреса в пределах одних суток.

Если выясняется, что такой IP-адрес уже сегодня был, то мы к текущему значению просмотров добавляем +1 и больше ничего.

Если же такого IP-адреса сегодня еще не было (т.е. посетитель уникальный), то сохраняем в базу его IP и обновляем значения как количества уникальных посетителей, так и просмотров (т.е. увеличиваем на единицу значения обоих полей).

8. Пишем файл, выводящий счетчик на страницы (show_stats.php)

Файл show_stats.php мы используем на каждой из страниц для того, чтобы вывести статистическую информацию. Вот его код:

";

Как видите, этот файл намного проще.

Здесь мы просто получаем из базы статистику по текущей дате, после чего используем ключи результирующего массива $row для вывода на экран количества уникальных посетителей (поле host ) и просмотров (поле views ).

9. Создаем файл "админки" (index.php в папке admin)

В этом файле мы представим статистику посещений в табличном виде.

Кроме того, мы реализуем возможность получать статистику за определенный период времени. Ниже представлен код файла index.php :

Статистика

За сегодня

За последнюю неделю

Недопустимый параметр!

"; } // Указываем кодировку, в которой будет получена информация из базы @mysqli_query ($db, "set character_set_results = "utf8""); // Получаем из базы данные, отсортировав их по дате в обратном порядке в количестве interval штук $res = mysqli_query($db, "SELECT * FROM `visits` ORDER BY `date` DESC LIMIT $interval"); // Формируем вывод строк таблицы в цикле while ($row = mysqli_fetch_assoc($res)) { echo ""; } } ?>
Дата Уникальных посетителей Просмотров
" . $row["date"] . " " . $row["hosts"] . " " . $row["views"] . "

Сначала соединяемся с базой. Затем формируем две ссылки с параметрами, которые позволят нам при клике по ним получать данные за определенный интервал времени (в примере: за 1 день и за 1 неделю).

Мы также проверяем глобальный массив $_GET на наличие передаваемого нами параметра (interval ) и, в случае, если значение этого параметра не является числом, мы выводим соответствующее предупреждение.

Если же все нормально, то мы совершаем запрос к базе, извлекая из нее все записи, отсортированные по дате в обратном порядке в количестве штук, заданных в параметре interval .

После этого мы запускам цикл while и в нем формируем строки таблицы, выводя в их ячейки элементы результирующего массива $row (date, hosts и views ), в результате чего получаем список всех посещений за указанный период времени.

Если краткий текстовый обзор вам не до конца понятен, то изучите полную версию урока в видеоформате на этой странице выше.

человек со стажем 10 ноября 2013 в 13:29

Статистика посещений сайта без сторонних сервисов

  • Разработка веб-сайтов

Доброго времени суток! Я думаю, все ещё помнят, как недавно после небольших сбоев на серверах Google, многие сайты тоже давали сбои.
На самом деле, такая ситуация может случится с любым сервисом в интернете, поэтому лучше лишний раз перестраховаться.
Для многих организаций, статистика посещаемости сайта влияет на работу маркетологов, которые определяют, в каких городах больше спрос на продукцию и т.д. Но а что, если сервис статистики, который используется на сайте, временно даст сбой?

Есть решение: использовать вместе со сторонними сервисами свой скрипт учёта посещений сайта.

Наш скрипт будет состоять из трёх файлов:

  • stat.php - инклудится в каждую страницу, за которой необходимо следить
  • stat.log - файл, в который будет записываться история посещений
  • seestats.php - файл, для просмотра статистики
На самом деле, можно использовать любые имена файлов.

Файл stat.php
$col_zap) array_shift($lines); $lines = $date."|".$bot."|".$ip."|".$home."|\r\n"; file_put_contents($file, $lines); ?>

Что бы каждый раз вручную не копать файл stat.log, создадим файл для вывода статистики посещений сайта:
Файл seestats.php

sizeof($file)) { $col=sizeof($file); } echo "Последние ".$col." посещений сайта:"; ?> sizeof($file)-$col; $si--) { $string=explode("|",$file[$si]); $q1[$si]=$string; // дата и время $q2[$si]=$string; // имя бота $q3[$si]=$string; // ip бота $q4[$si]=$string; // адрес посещения echo ""; echo ""; echo ""; echo ""; } echo "
Время и дата Данные о посетителе IP/прокси Посещенный URL
".$q1[$si]."".$q2[$si]."".$q3[$si]."".$q4[$si]."
"; echo "
Просмотреть последние 100 500"; echo "1000 посещений."; echo "
Просмотреть все посещения.
"; echo ""; ?>

Вот и всё! Теперь даже при падении liveinternet или Яндекс.Метрики, Вы всегда сможете узнать, кто заходил к Вам на сайт!

Теги: php, статистика, скрипт

Для начала, определим, откуда можно узнать что-то о посетителе вашего сайта? Дело в том, что при соединении с сервером, браузер посылает много информации о себе в заголовках. Промежуточные компьютеры между вашим, и конечным сервером, могут дописывать свои заголовки. В результате, до вашего скрипта доходит солидное количество информации о вас и о том, как вы получили доступ к сайту.

Как же изъять эти данные, чтобы знать о своих посетителях больше? Я хочу рассмотреть решение этой проблемы на языках Perl и php. Для начала, рассмотрим их на Perl. Нетерпеливые php-шники, вам тоже будет полезно почитать эту часть статьи. Хотя, если вам нужно решение, и побыстрее, то переходите к вашей части.

Получение данных о посетителе на Perl

Итак, начнем. Сервер получил заголовки, которые пришли к нему, вместе с клиентским запросом. Куда же он их девает? Как получить к ним доступ? Все просто. Эти данные сервер хранит в своих переменных, которые называются "переменные окружения". В Perl, доступ к ним осуществляется через хэш %ENV, ключами которого являются имена заголовков, а значениями — переданные данные.

Чтобы посмотреть все переменные окружения, достаточно выполнить простой идеоматический код:

print "$_ = $ENV{$_}
" foreach(keys %ENV);

Какие из этих переменных будут нам полезны? В принципе, вы можете собирать хоть все. Но разумнее было бы собирать лишь то, что нужно. Предлагаю собирать это:

$ip = $ENV{REMOTE_ADDR}; #IP-адрес вашего посетителя
#адрес страницы, на которой посетитель щелкнул по ссылке, ведущей на ваш сайт
#если он перешел на ваш сайт из закладок, или набрав адрес в адресной строке
#значение этой переменной, будет пустым
#если был переход с поисковой системы, эта переменная будет содержать поисковый запрос

$referer = $ENV{HTTP_REFERER};
$client = $ENV{HTTP_USER_AGENT}; #название браузера вашего посетителя.
#адрес страницы, на которую пришел ваш посетитель
#вы можете узнать на какие страницы вашего сайта приходят чаще
$page = $ENV{REQUEST_URI};

Вот так. Пользуйтесь)

Получение данных о посетителе на PHP

В php, дело обстоит похожим образом. Здесь тоже присутствует структура, хранящая данные о переменных окружения. Это ассоциативный массив $_SERVER.

Получим те же данные, но средствами php.

$ip = $_SERVER["REMOTE_ADDR"];
$referer = $_SERVER["HTTP_REFERER"];
$client = $_SERVER["HTTP_USER_AGENT"];
$page = $_SERVER;

Выведем все данные:

foreach($_SERVER as $k=>$v) {print("$k = $v
")}

Дополнительные заголовки. Прокси-серверы.

Некоторые пользователи сидят в интернете через прокси-серверы. В этом случае, неплохо было бы получить еще адрес прокси-сервера. Хорошие прокси посылают данные об IP своего клиента. Есть анонимные прокси, которые вырезают эту информацию из заголовков. В этом случае, получится узнать только адрес самого прокси-сервера.

HTTP_X_FORWARDED_FOR — ip-адрес пользователя, предоставляемый прокси-сервером
HTTP_VIA — имя прокси-сервера
REMOTE_ADDR — ip-адрес самого прокси-сервера

Получить информацию о пользователе, по его IP. Служба WHOIS.

Мы получили ip пользователя. И что с того? Эта информация нам ни о чем не говорит. Как же получить информацию о пользователе, если у нас есть его ip?

Можно воспользоваться службой whois . Вводим ip-адрес и получаем кучку информации. Мы можем узнать город, в котором живет обладатель этого ip, адреса. Иногда, даже точный адрес и e-mail! Мы, почти наверняка, узнаем провайдера обладателя этого IP.

Служба whois хранит и предоставляет информацию, в нестандартизированном формате. Это значит, что разные службы могут предоставлять несколько разную информацию.

Большой брат следит за тобой!

Прежде, чем начинать следить за всеми перемещениями пользователей по вашему сайту, вгоняя их в паранойю, подумайте, а что бы вы хотели знать о своих пользователях? Нужна ли вам информация о том, какие страницы сайта они посещали? Готовы ли вы пожертвовать серверной мощностью и пространством для хранения этих данных, ради того, чтобы собрать полную статистику?

Лично я, на этом сайте, использую систему сбора статистики. Она нужна только для того, чтобы узнавать откуда ко мне приходили посетители, какие поисковые запросы они вбивали. Поэтому, я записываю только тех посетителей, чей referer не пуст и не содержит адрес этого сайта.

Я могу оценивать, какие темы интересны людям, а какие — не очень. Скажем, регулярно заходят с гугла и яндекса. Значит, эта информация нужна людям. Проанализировав запросы, по которым заходят на эту статью, я понял, что не совсем удовлетворяю ожиданиям пользователей. Это заставило меня дописать несколько строк к статье, что придало ей законченности. Теперь пользователи уходят довольными.

Используйте слежку за пользователем с умом! Пусть полученные данные ведут к улучшению ресурса. Доброй охоты!

Если вам понравилась статья, можете подписаться на RSS этого блога и всегда быть в курсе обновлений. А еще, вы можете подписаться на рассылку новостей блога по почте.

Script языка на Apache сервере.

index.php - самый распространенный стартовый файл для начала работы скриптового языка программирования PHP на WEB сервере, в основном Apache .

Для новичка стоит только знать, что большинство сайтов (sites) свою работу начинают именно с этого файла (file). Размещается файл в корне основного хранилища файлов сайта. Также может располагаться внутри директорий (directory ). Тогда Apache сервер будет искать и грузить в первую очередь index.php в запрашиваемой директории, если не прописано что-либо иное в файле настроек сервера htaccess

Как заставить Apache первым загружать index.php (options)

Как правильно делать:

# чтобы работа начиналась только с index.php DirectoryIndex index.php

Многие делают еще так:

# начинать запуск скриптов с проверки указанной последовательности DirectoryIndex index.php index.html index.shtml

Тут стоит немного объяснить алгоритм действий:

  1. Пытаемся загрузить index.php .
  2. Если index.php directory ), то пытаемся загрузить index.html .
  3. Если index.html не обнаружен в корневом директории (directory ), то пытаемся загрузить index.s html

Есть много других опций (options) для управления загрузками, но это надо читать более расширенную спецификацию htaccess .

Используют такой метод, как правило , в том случае, если хотят защитить index.php от сканирования на предмет различных уязвимостей, например:

Index.php?mode=page&url="%20AND1="1

Если index.php будет другой, то все, что идет после index.php, не имеет никакого значения. Но существуют другие способы определить, какой именно файл является главным загрузочным на WEB сервере. Так что особой безопасности от этого метода не получится. А вот неудобства использования возрастают. Поэтому к этому методу стоит относиться с особой осторожностью и продуманностью.

Как скрыть index.php через htaccess

На WEB сервере Apache должен быть включен модуль mod_rewrite . На сегодняшний день данный модуль включен практически у каждого , но в любом случае в этом нужно убедиться, иначе не получиться работать. Данный метод в основном используют SEO оптимизаторы.

Код для скрытия index.php

# включаем модуль mod_rewrite RewriteEngine on # все что после index.php отправлялось на главную командную строку RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/ # убираем index.php из командной строки, чтобы оставалась только полезная информация RewriteRule ^index\.php$ http://сайт/

Как все запросы отправлять через index.php (redirect)

Тут тоже в общем-то ничего сложного

# Включаем работу mod_rewrite RewriteEngine on # если запрос не является файлом, то он будет отправляться на index.php # это делается, если ваш файл index.php обрабатывает не все, # что требуется, так как часто требуется разделить проект на более мелкие модули RewriteCond %{REQUEST_FILENAME} !-f # если запрос не является директорией, то он будет отправляться на index.php # это делается, чтобы директории типа /images/ не переадресовывались на index.php RewriteCond %{REQUEST_FILENAME} !-d # все остальное отправлять на index.php и там отрабатывать RewriteRule (.*) index.php [L]

Как скачать index.php

При соблюдении WEB мастером правил безопасности скачать index.php нельзя по определению.

Можно скачать index.php только в случаях, если:

  • Неправильно прописаны настройки в (.htaccess) . Здесь виноват только сам WEB мастер.
  • Имеется доступ к серверу через FTP протокол . Самый распространенный способ. Жертва заманивается на заранее сделанный сайт так как надо под различными предлогами (Вы выиграли миллион, ваш аккаунт заблокирован в социальных сетях и так далее). Как только вы попадаете на необходимый сайт, у вас копируют cookies. После этого пытаются их использовать для входа уже на ваш сайт. Избежать этого легко, достаточно не пользоваться WEB интерфейсами для управления своим сайтом и не устанавливать на свой компьютер каких-либо программ от неизвестных вам авторов с неизвестных источников, например: всякие ускорители интернета или сомнительные toolbar для с сомнительной эффективностью, но очень сильной настойчивостью его установить.
  • На сервере установлен дополнительный скрипт (back door ). Через такой скрипт можно получить любой файл с сервера, при этом чтобы он не был выполнен обработчиком PHP. Такие файлы можно загрузить на сервер через распространенные и известные уязвимости систем управления контентом (CMS). Например: WordPress, Joomla, DLE, Drupal, Codeigniter и так далее. Далее, под видом аватара загружается специально сформированный .gif файл, который в последствии можно вызвать, зная его расположение на сервере жертвы. Если CMS неправильно обрабатывает такие файлы, то через него можно получить необходимые доступы к сайту. Либо на CMS, типа WordPress, Joomla и другие устанавливается широко разрекламированный како-либо plugin (например: php search index ), который вроде бы и выполняет свою функцию, но при этом сливает данные о сайте своим разработчикам, тем самым позволяя им использовать сайт так, как им захочется.

Вот как-то так. Если у вас есть вопросы, задавайте их в комментариях, и в скором времени разъяснительный ответ появиться в этой статье.


Часто на сайтах можно видите фразу, сейчас данный сайт просматривает столько-то человек, или даже список зарегистрированных посетителей, находящихся в данным момент на сайте. Обычно такой сервис называют "Список посетителей OnLine". Учитывая, что у посетителя может динамически меняться IP-адрес, или наоборот несколько посетителей могут выходить в Интернет из под одного IP-адреса, для подсчёта уникальных посетителей на сайте прибегают к сессиям. Создадим таблицу session в которой будем хранить уникальные идентификаторы сессии (SID), назначенные посетителям.

Таблица session

CREATE TABLE session (id_session tinytext NOT NULL, putdate datetime NOT NULL default "0000-00-00 00:00:00", user tinytext NOT NULL) TYPE=MyISAM;

Таблица имеет три поля - id_session, поле, куда помещается SID сессии, поле putdate, для того, хранения времени обращения посетителя к страницам сайта и поле user, которое нами использоваться не будет, но в котором можно хранить имя пользователя, если у вас имеется система авторизации и вы хотите различать гостей и авторизованных пользователей. Предполагается, что имя пользователя помещается в элемент суперглобального массива $_SESSION["user"] - если вас интересует авторизация на PHP, с нейм можно ознакомиться по

В начало каждой страницы сайта, которая будет участвовать в регистрации посетителей следует при помощи конструкции поместить следующий код.

Скрипт регистрации посетителей в таблице session

// Начинаем сессию session_start (); // Получаем уникальный id сессии $id_session = session_id (); include "config.php" ; // Проверяем, присутствует ли такой id в базе данных $query = "SELECT * FROM session WHERE id_session = " $id_session "" ; $ses = mysql_query ($query ); if(! $ses ) exit("" ); // Если сессия с таким номером уже существует, // значит пользователь online - обновляем время его // последнего посещения if(mysql_num_rows ($ses )> 0 ) { $query = "UPDATE session SET putdate = NOW(), user = " $_SESSION [ user ] " WHERE id_session = " $id_session "" ; mysql_query ($query ); } // Иначе, если такого номера нет - посетитель только что // вошёл - помещаем в таблицу нового посетителя else { $query = "INSERT INTO session VALUES(" $id_session ", NOW(), " $_SESSION [ user ] ")" ; if(! mysql_query ($query )) { echo $query . "
" ; echo "

Ошибка при добавлении пользователя

"
; exit(); } } // Будем считать, что пользователи, которые отсутствовали // в течении 20 минут - покинули ресурс - удаляем их // id_session из базы данных $query = "DELETE FROM session WHERE putdate < NOW() - INTERVAL "20" MINUTE" ; mysql_query ($query ); ?>

Протокол HTTP не является сессионным протоколом, поэтому мы можем фиксировать только обращения посетителей к страницам сайта - сколько после этого посетитель будет читать страницу - одному богу известно - получить эту информацию мы не сможем. Поэтому мы будем считать, что если посетиель не обращается к страницам сайта более 20 минут - он ушёл и его можно удалять из таблицы session .

Теперь нам остаётся только вывести содержимое таблицы session или подсчитать число посетителей в ней.

Выводим содержимое таблицы session

// Устанавливаем соединение с базой данных include "config.php" ; // Выводим имена всех посетителей, записи о которых имеются // в таблице session $query = "SELECT * FROM session" ; $ath = mysql_query ($query ); if(! $ath ) exit("

Ошибка в запросе к таблице сессий

"
); // Если хоть кто-то есть - выводим таблицу if(mysql_num_rows ($ath )> 0 ) { echo "" ; while($author = mysql_fetch_array ($ath )) { // Если посетитель не зарегистрирован // выводим вместо его имени - "аноним" if(empty($author [ "user" ])) echo "" ; else echo "" ; } echo "
аноним
" . $author [ "user" ]. "
" ; } ?>

Для установки соединения с базой данных, нам потребуется конфигурационный файл config.php , следующего содержания.

Конфигурационный файл config.php

//////////////////////////////////////////////////////////// // 2003-2011 (C) IT-студия SoftTime (http://www.сайт) //////////////////////////////////////////////////////////// // сейчас выставлен сервер локальной машины $dblocation = "localhost" ; // Имя базы данных, на хостинге или локальной машине $dbname = "dbase" ; // Имя пользователя базы данных $dbuser = "root" ; // и его пароль $dbpasswd = "" ; // Устанавливаем соединение с базой данных $dbcnx = @ mysql_connect ($dblocation , $dbuser , $dbpasswd ); if (! $dbcnx ) { exit("

В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.

"
); } // Выбираем базу данных if (! @ mysql_select_db ($dbname , $dbcnx )) { exit("

В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.

"
); } // Устанавливаем кодировку соединения @ mysql_query ("SET NAMES "cp1251"" ); ?>