Как сделать количество скачиваний файла
PHP \ MySQL счетчик скачиваний
Давно уже не было уроков про PHP и MySQL. Сегодня мы создадим простой, но эффективный счетчик скачиваний.
У каждого файла будет запись в ряду таблицы базы данных. В этой же таблице будет сохраняться количество скачиваний файла. PHP будет обновлять БД MySQL и перенаправлять пользователя на необходимый файл.
Для отслеживания количества скачиваний любого файла, Вам необходимо его положить в папку files и использовать специальный УРЛ для обращения к нему.
Файлы, скачивания которых необходимо отследить, помещены в папку files в корневой папке скрипта. PHP потом проходит по всем файлам и добавляет каждый в качестве элемента списка ( li ) в неупорядоченный список.
Обратите внимание, что атрибут href ссылок передает название файла в качестве параметра для download.php. именно здесь и происходит отслеживание количества скачиваний.
После разметки давайте займемся оформлением. CSS правила ниже обращаются к div file-manager с помощью id ( символ #), так как он встречается только 1 раз на странице, и к остальным элементам по названиям классов.
Как я говорил раньше, PHP ищет файлы в папке files и выводит каждый файл в качестве элемента списка в неупорядоченном списке. Давайте взглянем на то, как это происходит
Ниже Вы видите код, который генерирует элементы списка:
Теперь давайте более детально взглянем на то, как происходит отслеживание файлов.
Важно проверить является ли Ваш посетитель человек или роботом поисковиков. Роботы это конечно хорошо, но не позволим им искажать нашу статистику. Именно поэтому ряд в базе данных обновляется только после проверки is_bot().
Как мы заметили в прошлом шаге, количество скачиваний сохраняется в качестве ряда в таблице download_manager. Для начала давайте объясним как работает этот запрос:
Он говорит MySQL вставить новый ряд в таблицу download_manager, и установить поле ряда filename на значение вызванного к скачиванию файла. Однако, поле filename обозначенного как уникальный индекс в таблице. Это означает, что каждый ряд можно вставлять только раз, иначе возникнет ошибка duplicate key error.
Таким образом новые файлы будут автоматически добавляться в БД при первом скачивании.
Для того, чтобы сделать отслеживание в виде реального времени, было бы хорошо обновлять счетчик возле названия файла после каждой загрузки.
Мы это сделаем с помощью jQuery:
Мы просто присваиваем обработчик кликов к ссылкам, который ведут к файлам, и при каждом нажатии мы добавляем значение.
Вот теперь наш счетчик полностью готов!
Заключение
Для того, чтобы демо заработало у Вас необходимо воссоздать таблицу download_manager в базе данных MySQL. Вы можете найти необходимый SQL код в исходниках.
После этого, добавьте Ваши данные для соединения с БД в файле configuration.php.
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.tutorialzine.com
Перевел: Максим Шкурупий
Урок создан: 4 Марта 2010
Просмотров: 52741
Правила перепечатки
5 последних уроков рубрики «PHP»
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Отслеживание загрузки файлов в Яндекс.Метрике и Google Analytics
В отличие от Яндекс.Метрики, в Google Analytics нет встроенного функционала отслеживания скачиваемых с вашего сайта файлов. Для этого необходимо размечать каждую ссылку соответствующим кодом события. А можно воспользоваться GTM и за 3 действия настроить отслеживание всех загружаемых файлов.
Начнем с Метрики. Чтобы определить, сколько раз посетители попытались (!) скачать с вашего сайта файлы (музыку, видео, документы и т.д.), нет необходимости в какой-либо настройки. Яндекс сам собирает статистику по скачиванию файлов, по умолчанию поддерживая большое количество расширений.
Для этого можно воспользоваться стандартным отчетом Загрузки файлов.
В нем содержатся данные по взаимодействиям пользователей с файлами, которые размещены на вашем сайте. Это могут файлы разного размера и формата. Например:
Если кто-то из посетителей захочет скачать что-то подобное на вашем сайте, Метрика зафиксирует это событие. По умолчанию поддерживается следующий список расширений: 3GP, 7Z, AAC, AC3, ACS, AI, AVI, APE, APK, ASF, BMP, BZ2, CAB, CDR, CRC32, CSS, CSV, CUE, DIVX, DMG, DJV, DJVU, DOC, DOCX, DOCM, DOCB, EMF, EPS, EXE, FLA, FLAC, FLV, GIF, GZ, TGZ, ISO, JPG, JPE, JPEG, JS, M3U, 3U8, M4A, M4V, MD5, MKV, MP3, MP4, MPG, MPEG, MOV, MSI, ODS, OGG, OGM, OGV, PDF, PHPS, PNG, PPT, PPTX, PPTM, PPTB, PSD, RAR, RSS, RTF, SEA, SIT, SFV, SHA1, SVG, SWF, TAR, TIF, TIFF, TORRENT, TS, TXT, VOB, WAV, WAVE, WEBM, WMA, WMV, WMF, XLS, XLSX, XLSM, XLSB,XPI,ZIP,GZIP
Вы можете передать в отчеты и другие расширения. Подробнее читайте в официальной справке Яндекса.
На скриншоте ниже представлен пример отчета Загрузки файлов по сайту моего курса по веб-аналитике, на котором размещена программа обучения в формате .pdf:
Отчет «Количество скачиваний» в Метрике
В сводку Метрики также можно добавить виджет со статистикой по скачиваниям, выбрав при этом нужную сегментацию (например, по странице загрузки).
Настройка виджета в Метрике
Если Метрика умеет отслеживать загрузку файлов по умолчанию, то Google Analytics этим похвастаться не может. И чтобы зафиксировать взаимодействие пользователя с каким-либо файлом на вашем сайте, необходимо в код данного элемента добавить специальную конструкцию события.
Разберем тот же пример с analytics.osipenkov.ru. Нужно настроить отслеживание загрузки файла этого блока.
Отслеживание скачивания файла
Сделать это можно, как минимум, тремя способами:
Разберем каждый из них.
С помощью события соответствующей конструкции для библиотеки Google Analytics
Чтобы реализовать данный способ, вам необходимо:
Полностью команда для analytics.js выглядит так:
Полностью команда для gtag.js имеет вид:
Для библиотеки analytics.js для нашего примера можно использовать (событие onclick):
Для библиотеки gtag.js так (событие onclick):
Категория и Действие по событию являются обязательными полями, а Ярлык и Ценность события необязательными.
Открываем в любом текстовом редакторе страницу (либо на сервере, либо на локальном компьютере), на которой необходимо разместить код события, находим соответствующий элемент и внутри него добавляем. У меня это конструкция для библиотеки gtag.js:
Добавление кода события в элемент отслеживания (gtag.js)
Сохраняем изменения. Если страница была скачана с сервера, то загружаем и подтверждаем изменения. После этого переходим на наш сайт и кликаем по отслеживаемому элементу. В отчетах «В режиме реального времени», если все сделали верно, вы увидите настроенное событие:
В режиме реального времени
Аналогичным образом нужно проделать для каждого файла на сайте, который вы хотите отслеживать. Данные по событиям доступны в отчете Поведение – События – Лучшие события.
Отслеживание с помощью Autotrack
Вот некоторые преимущества автотрека:
Инструмент был анонсирован в начале 2016 года и сейчас доступен по ссылке: https://ga-dev-tools.appspot.com/autotrack/
Например, вы можете использовать Autotrack для автоматического отслеживания кликов исходящих ссылок на вашем сайте. На этой странице визуально продемонстрировано то, как можно использовать автотрек для автоматического сбора данных с помощью этой библиотеки.
Клики на исходящие ссылки (Autotrack)
Если на вашем сайте загрузка файлов осуществляется с помощью клика по кнопке или ссылке, вы можете отследить его с помощью Autotrack. Так называемое декларативное отслеживание событий.
В коде отслеживания событий вы настраиваете специальные атрибуты data-event-category и data-event-action, присвоив им определенные значения.
Декларативное отслеживание событий
Чтобы это работало, вам нужно установить Autotrack. Вы также должны иметь контроль над метаданными в HTML вашего сайта.
Также с помощью автотрека можно отслеживать медиа-запросы: контрольные точки, точки останова (breakpoints), разрешение экрана (resolution), ориентацию экрана (orientation).
Отслеживание медиа-запросов с помощью автотрека
Чтобы настроить Autotrack на собственном сайте, необходимо ознакомиться с документацией (GitHub). Посмотреть исходный код можно здесь.
Примечание: Autotrack не работает с кодом gtag.js. Но его еще могут использовать на тех сайтах, на которых установлен Universal Analytics (библиотека analytics.js).
Autotrack, на первый взгляд, сложен в реализации. Однако не все аналитические решения просты. Вот почему я предлагаю еще одно решение.
Отслеживание с помощью Google Tag Manager
Если в Google Analytics вы хотите отслеживать много загружаемых файлов на своем сайте и не обладаете знаниями в разработке и разметке кода, то первые два способа могут показаться достаточно трудоемкими. Именно поэтому лучше настроить отслеживание загрузки файлов через Google Tag Manager.
Чтобы это сделать, необходимо:
Переходим на вкладку Переменные и включаем встроенную переменную Click URL.
Включение встроенной переменной Click URL
Переходим на вкладку Триггер и выбираем Тип триггера – Клик – Только ссылки. Добавляем такие настройки:
Регулярное выражение \.(pdf|xlsx|xls|doc|txt|png|docx|ppt|pptx)$
Настройка триггера активации
В зависимости от типов файлов, которые размещены у вас на сайте, вы можете использовать разное количество расширений. Например, взять полный список всех расширений из Метрики и добавить его в триггер. В результате получите что-то подобное:
Как узнать сколько раз скачали ваш файл
Как узнать сколько раз скачали ваш файл?
С того момента, как только будет создан ваш сайт, самым первым и очевидным желанием будет узнать, насколько он популярен. Существуют разные возможности, которые могут решить эту проблему. Обычно сервер, который предоставляет вам хостинг, дает очень скудную статистику. В эту статистику входит только количество обращений на сайт и количество переданной информации. Но согласитесь, что этого совсем даже недостаточно. Файлов на сайте очень много и хотелось бы иметь представление о том, что же там у нас скачивают.
Ну и как тогда можно решить эту проблему? Выход есть — счетчики скачиваний. Не пугайтесь, все очень просто. Вы наверняка уже их видели. Обычно этот счетчик устанавливается рядом со ссылкой на скачиваемый документ. Примерно, все выглядит так: Ссылка – Скачали [656]. 656 – это и число, которое увеличивается на 1 при каждом скачивании файла, а программа, которая это осуществляет – счетчик скачиваний.
Очень важно понимать, как именно работает счетчик, а уже затем можно приступать к написанию кода.
Первым делом нужно определиться с его структурой: из каких файлов он будет состоять и как все будет взаимодействовать. Для наглядности я хочу привести следующий рисунок.
У нас есть какой-нибудь сайт www.сайт.ru. Допустим, что на этом сайте нужно подсчитывать сколько раз скачивают некоторые книги. Ссылки на книги находится в файле book.php. Для удобства создаем отдельную директорию Counters, в которой будет сам счетчик (counter.php) и текстовые документы, в которых будут храниться данные, сколько раз скачали соответствующую книгу (book1.txt и book2.txt). Вы спросите, а почему бы не использовать для хранения числа скачиваний базу данных? Конечно, book.txt можно заменить базой данной, но для этого нужно специальное программное обеспечение. К тому же текстовые файлы использовать гораздо проще, чем базу данных. А я рассчитываю свою статью в первую очередь на новичков. Несомненно, что на большом сайте использование базы данных является необходимостью. Без нее там никак не обойтись. Просто количество текстовых файлов достигнет такого количества, что управляться с ними станет практически невозможным. Но это уже тема другой статьи.
В итоге, как результат, когда мы открываем файл book.php, то должны видеть примерно следующее:
Ссылка (Количество скачиваний: 25). 25 — это число, которое увеличивается на 1 при нажатии на ссылку.
Теперь попробуем описать, как это цикл работает в целом. Сначала загружается страница с нашей ссылкой и надписью – «Количество скачиваний: 25». Чтобы взять число 25 нужно обратиться к файлу, где оно храниться (book.txt). Как только пользователь нажимает на ссылку, запускается программа (counter.php), которая увеличивает переменную на 1 и записывает ее в текстовый файл. И так каждый раз.
Как видите теоретически все очень просто. Но основные проблемы возникают на практике.
Счетчик скачиваний файла на PHP & MySQL
В этой статье мы узнаем, как написать счетчик скачивания файла самому. Мы напишем простой, в то же время красивый и удобный счетчик на PHP и MySQL. Для красоты будем использовать jQuery. Но базовый скрипт счетчика скачиваний файла написан на PHP, с использованием БД MySQL. Каждый файл будет иметь отдельную строку записи в БД, где будет храниться общее количество скачиваний файла. PHP скрипт, будет обновлять данные в MySQL, и перенаправлять пользователей на соответственный файл. Для подсчета количества скачивания файла, вам необходимо загрузить файл в специальную папку, и использовать специальный URL для доступа к нему.
ШАГ 1 – XHTML
Первым шагом будет создать XHTML разметку списка файлов со счетчиками. Здесь все просто – у нас есть файл менеджер (div), который содержит неупорядоченный лист (ul), в котором каждый файл это li элемент.
Файлы, количество скачек которых необходимо посчитать, мы поместим в папку files, которая находится в корневом каталоге скрипта. PHP проходит через папку и каждый файл разделяет в отдельный li элемент списка (ul).
demo.php
Заметьте, что href атрибут ссылки – передает имя файла как параметр к файлу download.php. Здесь мы и будем считать количество скачек файла. Скоро вы это увидите.
ШАГ 2 – CSS
Что бы на скрипт счетчика было приятно смотреть, добавим немного CSS. Конечно же вы можете менять все на свой вкус.
styles.css
ШАГ 3 – PHP
Немного ранее, мы говорили о том, что PHP будет проходить через папку files, и выводить каждый файл как li элементт. Теперь давайте посмотрим как это работает.
demo.php – Верхняя часть кода
Заметьте, как мы выбираем все записи из таблицы download_manager, с помощью mysql_query(). После чего, мы добавляем их в массив $file_downloads, в котором имя файла это ключ, а количество скачек это значение. Далее мы можем получить доступ к числу скачек с помощью строки – $file_downloads[‘archive.zip’].
Теперь рассмотрим код, который мы будем использовать для генерации li элементов.
demo.php – конец
Здесь все просто, мы используем цикл foreach для прохождения по массиву $files_array, и выводим его содержимое на экран.
Рассмотрим, как устроен файл подсчета скачек файлов.
download.php
В этом коде, мы будем отслеживать поисковых роботов, который также могут сканировать ссылки. В случае посещения ссылки роботом, мы не будем обновлять запись в базе данных. Это нужно для точной статистики, мы будем знать количество скачиваний только реальных посетителей. Для этого нужно включить максимальное количество имен роботов в массив $botlist.
ШАГ 4 – MySQL
В предыдущих шагах, мы говорили, что все данные будут сохраняться в БД, в таблице download_manager. Теперь, посмотрим, с помощью которого запроса мы будем обновлять данные:
Этот код заставляет MySQL вставить новую строку в таблицу download_manager, и изменить значение поля filename на имя файла. В случае повтора имени файла мы просто обновим значение поля downloads на +1. Поэтому все новые файлы будут добавляться автоматически в базу данных, если их скачают.
Ниже, предоставлена структура таблицы download_manager:
ШАГ 5 – jQuery
Для того, чтобы счетчик скачивания файлов работал в режиме реального времени, будет хорошо, если мы обновим цифру количества скачиваний в то время, когда пользователь нажал на ссылку скачивания. Цифра обновиться до того, как перезагрузиться страница. Это создаст эффект работы скрипта в режиме реального времени.
Мы сделаем это с помощью маленького кусочка кода jQuery:
Мы установили обработчик событий нажатия на ссылку. При каждом нажатии, мы просто добавляем +1 к значению в span теге.
ШАГ 6 – htaccess
Еще одна немаловажная вещь, которую нужно сделать. Так как ссылка на файл, это параметр. Нам нужно прописать несколько строк в htaccess, чтобы происходило перенаправление на скачивание файла. Этот .htaccess файл, должен находиться в папке files:
На этом, написание счетчика скачивания файлов закончено!