Kwert-soft.ru

IT Софт для ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Счетчик посетителей php

Статистика посещений на PHP

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

Главная задача статистики посещений — это отличить одного пользователя от другого. Но как это сделать? К сожалению, это вообще невозможно. Если различать по IP, то ничего не выйдет. У огромного числа пользователей он динамический. Более того, у разных людей они повторяются. В итоге, 2 разных IP могут принадлежать одному человеку, а один и тот же IP может принадлежать разным людям.

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

На основании этого давайте с Вами разберём, какая таблица в базе нам потребуется. Вот те поля, которые я считаю необходимы для хорошей статистики посещений на PHP:

  • id — уникальный идентификатор.
  • userhashcookie пользователя. Данное поле по сути и является ключевым при различении пользователей.
  • ipIP-адрес пользователя.
  • uri — страница, на которую пришёл посетитель. Например, /page.html.
  • ref — адрес, с которого пришёл посетитель.
  • date — дата посещения.

Теперь разберём PHP-код добавления в эту таблицу новой записи:

query(«INSERT INTO `visits` (`userhash`, `ip`, `uri`, `ref`, `date`) VALUES (‘$userhash’, ‘$ip’, ‘$uri’, ‘$ref’, ‘$date’)»); // Добавляем запись
$mysqli->close(); // Закрываем соединение
?>

Безусловно, данный код надо размещать на всех страницах сайта. И так же он может быть и изменён в зависимости от Вашего движка. Также можно добавлять и другие данные, например, браузер пользователя, ОС и прочее.

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 23 ):

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

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

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

    Отлично,надо бы «похимичить» с этим кодом.

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

    Расскажу о создании графиков в PHP на основе данных, но это будет через 2-3 недели.

    Большое спасибо, будем с нетерпением ждать этой статьи, всё мы точно будет рады. Огромное спасибо, а когда будет статья про спойлер на js? Я вас просил написать и до сих пор жду

    Читать еще:  Php определить константу

    Счетчик php посещений, просмотров, скрипт

    Сегодня по программе счетчик посещений на языке php. Сделаем несколько вариантов счетчиков на php! Простой счетчик — когда-то именно с такого счетчика начинал я! счетчик перезагрузок страницы без ограничений! И последний счетчик — он будет ограничен сессией!Скрипт счетчика очень простой! При загрузке страницы прибавить 1 , к уже имеющимся посещениям страницы!

    Самый простой счетчик посещений на php

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

    Необходимые условия для счетчика посещаемости на php:

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

    Логика скрипта подсчета зашедших пользователей

    Папка для сохранения результатов подсчета посещений на php

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

    Для удобства лучше переменную _SERVER поместить в переменную $home(это просто удобнее)

    Выведем echo $home;

    Результат у вас будет точно будет другим.

    Ну и собственно — далее вручную прописываем путь от корневой папки до той папки, где у вас будут храниться ваши файлы с количеством перезагрузок страницы. Чтобы не придумывать — возьмем наш замысловатый путь.

    Не обязательно делать большими буквами — просто я это сделал еще при царе горохе — не стал переделывать!

    Создание названия файла для счетчика php

    О названии файла для счетчика засскажу отдельно!

    Название файла должно быть уникальным – вы можете придумать свой алгоритм создания уникального названия вашего файла…

    Я предлагаю использовать такой алгоритм – путь до файла от корневой папки будет уникальным! Если мы его пропустим через функцию md5 то получим уникальный идентификатор.
    1. — получим адрес страницы, на которую зашел пользователь — здесь мы в подробностях разбирали этот процесс.

    $parse_url = parse_url($_SERVER[«REQUEST_URI»], PHP_URL_PATH);

    $real_page = $domen . $parse_url

    Мы подготовили файл для записи количества посещений на странице.

    Название файла + папка для счетчика

    Ну и собственно — нам нужно соединить выше два идущих пункта, применительно к данной странице:

    Получение результата количества посещаемости из файла

    Выведем вот так:

    Запись количества посещений на сайте

    Запись количества посещений на сайте, ничем не отличается от первого пункта:

    Сейчас обойдемся тремя строчками, чтобы было понятно!

    1. В переменную получим адрес где записана посещаемость страницы:

    Собака нужна для того, чтобы при первой загрузке не возникала ошибка, поскольку файла еще не существует!

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

    Теперь соберем весь счетчик полностью, как он у меня стоит на сайте.

    $parse_url = parse_url($_SERVER[«REQUEST_URI»], PHP_URL_PATH);

    $real_page = $domen . $parse_url;

    $url_looks = $home.»/ ВАШ_ПУТЬ_ДО_ПАПКИ/ «.md5($real_page).».dat»;

    @file_put_contents($url_looks, ($count_looks + 1));

    Счетчик PHP для подсчёта уникальных посетителей на сайте используем сессии

    Чем отличается обычный счетчик посещений на сайте и счетчик, который считает уникальных посетителей!?

    Что запись уникальных посещений — это запись в файл один н раз!

    Для этого нам нужно запустить сессию, если она у вас не запущена.
    Если $_SESSION[«count»] не существует, то записываем +1 и внутри присваиваем данной сессии единицу!

    При следующей перезагрузке php dj внутрь уже не зайдет!

    $parse_url = parse_url($_SERVER[«REQUEST_URI»], PHP_URL_PATH);

    $real_page = $domen . $parse_url;

    $url_looks = $home.»/ ВАШ_ПУТЬ_ДО_ПАПКИ/ «.md5($real_page).».dat»;

    @file_put_contents($url_looks, ($count_looks + 1));

    Старый вариант названия файла

    Старый вариант, который на момент написания данной строки все еще существует на данном сайте. не знаю, когда дойдут руки.

    $real_page = $_SERVER[«HTTP_X_FORWARDED_PROTO»].’://’.$_SERVER[«HTTP_HOST»] . parse_url(strip_tags($_SERVER[‘REQUEST_URI’]), PHP_URL_PATH);

    $url_looks = $home.’/__a-data/__COUNT_FOR_FILE/’. str_replace($array_replace, «_», $real_page).’.html’ ;

    В результате, мы получаем, такой адрес для записи количества просмотров:

    Делюсь с вами как с друзьями!

    Счетчик надо ставить в самом конце, всех проверок. как я сделал. весь php код срабатывает(до html). на все проверки, типы, виды страниц, и если не выдается $no_page записываем +1.
    В единой точке входа, я немного рассказал о той структуре проверок php на существование страниц. схематично

    Страница полностью переписана.

    Друзья! Для всех кто не в курсе, то мы периодически возвращаемся к старым страницам и одна из таких страниц – это счетчик на PHP, и я его написал, наверно одним из первых кодов вообще!

    Читать еще:  Php создать изображение

    И сейчас – это реально невозможно понять и прочитать! Поэтому весь старый контент в мусорку!

    Полностью переписали данную страницу!

    Вас может еще заинтересовать список тем : #PHP | #PHP_COUNT | #PHP_FILE | #PHP_BOOK |

    НАШИ ПРОЕКТЫ : Проекты находятся в разной степени готовности (просто их столько, что времени не хватает…)

    Счётчик посещений

    Введение

    После создания сайта у меня возникла необходимость сделать учёт посещаемости. Надо сказать, что на хостинге и так стоит WebAlizer, который работает на стороне сервера и собирает довольно обширную статистику. Но и у него есть свои недостатки, самый главный — невозможность точно сказать, сколько человек действительно было на сайте и смотрело страницы. Суть проблемы заключается в том, что помимо пользователей есть ещё и различные программы, например, поисковые пауки или программы взлома, которые также запрашивают страницы сайта, но не отображают их пользователю. Ещё некоторые клиенты запрашивают файлы напрямую, что, в принципе, не является посещением самого сайта. В связи с этим появилось желание поставить обычный графический счётчик, который учитывает именно посетителей.

    Среди большого количества бесплатных счётчиков, которые предоставляют сервис статистики, я выбрал HotLog. Этот выбор был обусловлен тем, что HotLog, в общем, неплохой сервис и предоставляет то самое, чего не хватает WebAlizer. Их графический счётчик показывает общее число посещений и прибавку посетителей за текущий день.

    Однако, после некоторого времени использования счётчика, наблюдалась следующая ситуация — сервер статистики, который выдаёт картинку, был недоступен огромное количество времени. Это и понятно — бесплатный сервис работает по остаточному принципу. Но разница, которая была между хотлоговским счётчиком и WebAlizer, меня не устраивала. Так родилась идея написать очень простой и быстрый счётчик, который бы учитывал общее число посетителей, прибавку за день и количество посещённых страниц.

    Постановка задачи

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

    От постановки задачи уже можно перейти к условностям :-). Решение программных задач очень схоже с решением уравнений. Итак, пускай посетитель у нас будет хостом, просмотр страницы хитом. Пускай хостом будет считаться браузер, который не передал секретную куку (cookie — печенье), или в переданной куке содержится вчерашняя дата. Вообще, в куке будет храниться дата, когда она (кука) была установлена счётчиком. Это нужно, чтобы разделять посетителей по дням, то есть, если пользователь зашёл вчера и посетил 10 страниц, то должны насчитаться 1 хост и 10 хитов. Если этот же пользователь зашёл уже сегодня и посетил 5 страниц, то это 1 хост и 5 хитов. То есть, статистика пользователей должна быть посуточной. Хитом в этом случае будет считаться любое посещение пользователя.

    Для хранения статистики я выбрал обычный текстовый файл, где будет храниться всего одна строка. Это будет самый быстрый вариант хранения данных. Конечно, много информации так не сохранишь, но мне это и не требуется.

    Решение задачи

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

    Второй момент — графический фон счётчика. Всё-таки намного эстетичней, когда счётчик сам по себе не портит дизайн сайта и вписывается в него органично. Поэтому нужно предусмотреть два варианта, когда есть подложка и когда файл-подложка недоступен. Если файла с фоном нет, то его (фон) нужно нарисовать.

    И третье, что нужно учесть — блокировка файла на время обработки. Блокировать нужно на тот случай, если будет несколько обращений к файлу статистики одновременно. Если же файл не блокировать, то вполне вероятно, что будет ситуация, когда либо сам файл повредится, либо некоторые данные будут теряться.

    Помня обо всём этом, можно приступать к написанию скрипта.

    Читать еще:  Обработка запросов с помощью php

    Этот скрипт я назвал index.php и поместил в папку counter .

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

    Теперь можно обращаться к счётчику по ссылке counter/cnt.gif .

    Последним штрихом, я написал файл, который отображает краткую статистику счётчика в виде html-страницы.

    Пример работы

    После размещения файлов на сервере, я вставил такой код в шаблон:

    В результате получил счётчик, почти как у HotLog :-), а может и лучше, ведь он доступен всегда, когда доступен сайт!

    Что можно добавить

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

    © 2020 Антон Прибора. При копировании материалов с сайта, пожалуйста, указывайте ссылку на источник.

    Счетчик посещений на PHP

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

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

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

    Для создания такого скрипта нам понадобится добавить в MySQL таблицу, которая будет содержать в себе id посещенной темы, IP адрес посетителя и время визита. Назовем данную таблицу visit_theme. Структура таблицы visit_theme приведена ниже:

    Так же потребуется добавить в основную таблицу, где хранится вся информация по темам сайта (в PHP коде мы назвали данную таблицу all_theme), дополнительное поле visits (тип данных integer). В данном поле мы будем хранить суммарное число посещений темы, которое будет показываться на сайте для конкретной странички.

    Далее, на все странички Вашего сайта, где необходимо установить счетчик посещений, добавьте следующий PHP код:

    php
    $theme_id = » ; //Необходимо из базы получить и указать id темы
    $ip = $_SERVER [ ‘REMOTE_ADDR’ ];
    $time = time ();

    $res = mysqli_query ( $db , «SELECT count(id) FROM visit_theme WHERE
    > . $theme_id . «‘ and ip_visit=INET_ATON(‘» . $ip . «‘) and
    date_visit>'» .( $time — 86400 ). «‘ LIMIT 1» );
    $count_id = mysqli_fetch_array ( $res );
    if ( $count_id [ 0 ]== 0 ) <
    $res = mysqli_query ( $db , «UPDATE all_theme SET visits=(visits+1) WHERE
    > . $theme_id . «‘ LIMIT 1» );
    $res = mysqli_query ( $db , «INSERT INTO visit_theme (id_theme_visit,ip_visit,date_visit)
    VALUES (‘» . $theme_id . «‘,INET_ATON(‘» . $ip . «‘),'» . $time . «‘)» );
    >
    ?>

    Данный PHP код проверяет в таблице visit_theme, были ли посещения данной странички с данного IP адреса за последние 24 часа (86400 секунд). Если не было, то увеличивает в таблице all_theme для темы с указанным id количество просмотров на единицу и добавляет в таблицу visit_theme новую запись с id посещенной страницы, IP адресом посетителя и временем посещения.

    В том месте, где должно выводиться количество посещений темы, добавьте такой PHP код:

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

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

    Ссылка на основную публикацию
    Adblock
    detector