ДОСТИГНУТО:

01.11.2016-300 страниц в индексе Google;
19.01.2017-300 страниц в индексе Яндекса;
03.02.2017-40 ТИЦ;
05.02.2017- сайт принят в DMOZ каталог;

Счетчик скачиваний файлов на PHP с применением htaccess и MySQL

.

schet1Счетчик скачиваний файлов на PHP с применением htaccess и MySQL

Всем привет!

В этой заметке я предлагаю вашему вниманию PHP-скрипт, служащий для подсчета количества скачиваний файлов с сайта с использованием базы данных MySQL и применением файла Apache .htaccess. Счетчик может быть полезным для тех, кто выкладывает на своих сайтах файлы для скачивания и хочет вести учет по количеству скачиваний либо конкретного файла, либо всех доступных для скачивания файлов. Например, это могут быть файлы фотографий, плагинов, утилит, приложений, аудио, видео, экранных заставок.

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

Итак, переступим к делу.
Допустим, что наш PHP-скрипт счетчика скачиваний файлов будет называться downloads.php. Тогда для начала нам нужно будет в файле .htaccess добавить правило редиректа, как показано в следующем примере:

После добавления этого правила имя каждого файла с расширением .zip, .pdf, .rar будет передаваться в виде GET-параметра для вызова PHP-скрипта. Например, если файл называется bonus.zip, то с учетом установленного нами правила редиректа мы получим на выходе ссылку /downloads.php?file=bonus.zip. Кроме указанных в примере расширений можно добавлять другие, разделяя их символом вертикальной черты «|».

Для того, чтобы повысить безопасность и чтобы ссылка редиректа не показывалась, в .htaccess нужно использовать только параметр [L] и к ссылке добавить параметр-ключ, например «key=secretkey23709676»:

Стоит учесть, что по приведенному выше примеру файл PHP-скрипта downloads.php должен будет находиться в корневой директории сайта. Если же Вы захотите его расположить в другом месте, то в файле .htaccess нужно будет произвести соответствующие изменения. То же самое касается и файлов для скачивания. Если они находятся не в корневой директории, то путь к ним нужно будет указать либо в файле .htaccess, либо в самом скрипте downloads.php.

Теперь настала пора создать в базе данных таблицу для учета скачиваний файлов. Открываем phpMyAdmin, выбираем нужную нам базу данных и выполняем в ней следующий SQL-запрос:

Теперь необходимая нам таблица в базе данных создана и пора на сайт закачать файл downloads.php. Вот код PHP-скрипта этого файла:

Только не забудьте в первых строках скрипта заменить значения localhost, username, password и dbname на ваши для доступа к вашей базе данных. Да, и еще, Вы наверно заметили, что для повышения безопасности выше рекомендовалось в .htaccess добавлять к запросу параметр «key=secretkey23709676» (значение Вы сами свое конечно придумаете). Поэтому и в скрипте учтена проверка этого параметра-ключа в первых строках.

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

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

В этом запросе ON DUPLICATE KEY означает: при дублировании ключевого поля (в нашем случае ключевое поле filename, так как при создании таблицы указано: PRIMARY KEY = filename) увеличить на 1 числовое (int) поле dcount.

Удачи Вам в использовании счетчиков скачиваний файлов на языке PHP и использования .htaccess и MySQL!

Примечание
В некоторых случаях счетчик скачивания файлов может увеличиваться не на единицу, а на две (или больше, но это уж очень редкий случай), и связано это как правило с использованием мульти-поточных качалок типа Download Master, FlashGet и тому подобных.
Способы решения подобной проблемы Вы можете просмотреть в комментариях к этой статье. Ну а если у Вас есть свои решения, то поделитесь пожалуйста ими, добавив код в комментарии. Многие будут за это Вам благодарны.

БЕРЕГИТЕ СЕБЯ!




лайк

Эти красотки хотят чтобы ты их жестко лайкнул и даже несколько раз твитнул!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *