|
Если Вам нужен качественный хостинг и Вы непротив сэкономить 10% на его покупке, то Вы можете воспользоваться моим специальным предложением по скидке на хостинг от компании Ютекс.
|
PHP \ MySQL счетчик скачиваний
Давно уже не было уроков про PHP и MySQL. Сегодня мы создадим простой, но эффективный счетчик скачиваний. У каждого файла будет запись в ряду таблицы базы данных. В этой же таблице будет сохраняться количество скачиваний файла. PHP будет обновлять БД MySQL и перенаправлять пользователя на необходимый файл. Для отслеживания количества скачиваний любого файла, Вам необходимо его положить в папку files и использовать специальный УРЛ для обращения к нему.
Шаг 1 - XHTML Первым шаг - это создание разметки нашего скрипта. Она очень простая - у нас есть div file-manager, который содержит неупорядоченный список, в котором каждый элемент списка отвечает за файл. Файлы, скачивания которых необходимо отследить, помещены в папку files в корневой папке скрипта. PHP потом проходит по всем файлам и добавляет каждый в качестве элемента списка (li) в неупорядоченный список. demo.php
Обратите внимание, что атрибут href ссылок передает название файла в качестве параметра для download.php. именно здесь и происходит отслеживание количества скачиваний. Вам необязательно отображать все таким же образом - Вы просто можете давать ссылки на download.php на Ваших страницах и все скачивания не пройдут мимо.
Шаг 2 - CSS После разметки давайте займемся оформлением. CSS правила ниже обращаются к div file-manager с помощью id (символ #), так как он встречается только 1 раз на странице, и к остальным элементам по названиям классов. styles.css
Шаг 3 - PHP Как я говорил раньше, PHP ищет файлы в папке files и выводит каждый файл в качестве элемента списка в неупорядоченном списке. Давайте взглянем на то, как это происходит demo.php - верхняя часть
Обратите внимание как мы выбираем все ряды с таблицы download_manager с помощью mysql_query(), и позже добавляем их к массиву $file_downloads с названием файла в качестве ключа к количеству скачиваний. Таким образом, далее в коде, мы можем писать $file_downloads['archive.zip'] и выводить количество скачиваний. Ниже Вы видите код, который генерирует элементы списка: demo.php - средняя часть
Все делается просто с помощью цикла foreach массива $files_array. После этого все выводится с помощью echo. Теперь давайте более детально взглянем на то, как происходит отслеживание файлов. download.php
Важно проверить является ли Ваш посетитель человек или роботом поисковиков. Роботы это конечно хорошо, но не позволим им искажать нашу статистику. Именно поэтому ряд в базе данных обновляется только после проверки is_bot(). Шаг 4 - MySQL Как мы заметили в прошлом шаге, количество скачиваний сохраняется в качестве ряда в таблице download_manager. Для начала давайте объясним как работает этот запрос: download.php
Он говорит MySQL вставить новый ряд в таблицу download_manager, и установить поле ряда filename на значение вызванного к скачиванию файла. Однако, поле filename обозначенного как уникальный индекс в таблице. Это означает, что каждый ряд можно вставлять только раз, иначе возникнет ошибка duplicate key error. Именно здесь и будет работать вторая часть запроса - ON DUPLICATE KEY UPDATE сообщит MySQL добавить единицу к колонке скачиваний, если файл уже существует в базе. Таким образом новые файлы будут автоматически добавляться в БД при первом скачивании.
Шаг 5 - jQuery Для того, чтобы сделать отслеживание в виде реального времени, было бы хорошо обновлять счетчик возле названия файла после каждой загрузки. Мы это сделаем с помощью jQuery: script.js
Мы просто присваиваем обработчик кликов к ссылкам, который ведут к файлам, и при каждом нажатии мы добавляем значение. Шаг 6 - htaccess Есть еще одна вещь, которую необходимо сделать. Download.php редиректит пользователя к запрашиваемому файлу, который был передан в качестве параметра. Однако, Вы могли заметить, что некоторые типы файлов браузеры пытаются открыть напрямую. Нам же необходимо инициировать их загрузку. Это можно сделать с помощью нескольких строк внутри файла .htacess, который находится в папке files.
Вот теперь наш счетчик полностью готов! Заключение Для того, чтобы демо заработало у Вас необходимо воссоздать таблицу download_manager в базе данных MySQL. Вы можете найти необходимый SQL код в исходниках. После этого, добавьте Ваши данные для соединения с БД в файле configuration.php. Данный урок подготовлен для Вас командой сайта http://ruseller.com
Хотите освоить PHP и MySQL с нуля? Рекомендую Вам курс «PHP+MySQL для начинающих», который содержит в себе 110 видеоуроков на DVD, которые позволят Вам быстро погрузиться в интересный мир web-программирования. Все уроки даны в легкой и доступной форме. Откройте для себя секреты создания профессиональных PHP сайтов с использованием базы данных MySQL! Оценивать уроки могут только зарегистрированные пользователи Если хотите не упустить данный урок, добавьте его в закладки Пять последних добавленных уроков в рубрике PHP: »Поддержка CSS3 с помощью PHP »Cоздаем массив в PHP »Как хранить массивы в базе данных »Рекомендации на будущее с системой голосования »Сканирование папки с изображениями (PHP) Зарегистрируйтесь, чтобы иметь возможность добавлять комментарии Комментарии: Автор: Тимур (2010-04-23 15:19:05) http://mrxpert.ru/download/ Вот русифицировал! Автор: QUALITER (2010-03-14 03:30:35) Спасибо за урок. А если файл лежит на сервере (например видеоролик), можно будет ему такой же счётчик сотворить. Вопрос : Можно ли отличить как-нибудь: проигрыватель загрузил видео и положил его к себе в оперативку или же видюшку забирает кто-то через флэш - гэт напрямки себе на комп? Автор: Skiv (2010-03-08 21:36:48) Спасибо за урок Автор: МаксимШкурупий (2010-03-07 16:58:55) НеБот, такого урока еще не было. Автор: НеБот (2010-03-06 17:26:00) Переводим всё что на tutorialzine... подобные уроки уже были. Автор: Sonic (2010-03-06 11:45:47) Счётчик легко накручивается. Достаточно быстро нажимать на кнопку Download Автор: Scorpius (2010-03-05 13:49:10) хотя нет ерунду написал в принципе согласен можно и так Автор: Scorpius (2010-03-05 13:44:55) foreach($botlist as $bot) { if(strpos($_SERVER['HTTP_USER_AGENT'],$bot)!==false) return true; // Is a bot } return false; можно заменить на return in_array($_SERVER['HTTP_USER_AGENT'],$botlist); Автор: PROGRAMMATOR (2010-03-05 05:06:23) Изучаем http://www.php.su/functions/?cat=url Автор: kukurikan (2010-03-05 02:59:40) Хорошо, а вот как Вы делаете в ссылке на скачку файла, вместо пробелов + ? |
Если Вы давно мечтаете о создании собственного блога на движке Wordpress, то советую Вам обратить внимание на мой новый видеокурс "Wordpress - Профессиональный блог за один день". Это более 100 видеоуроков по всем аспектам создания и ведения своего блога на самом популярном движке в мире.
Меня часто спрашивают, как я раскручивал данный сайт? Мой ответ таков. Для раскрутки данного сайта использовалась методика "Мастер план по раскрутке сайта", которая была предложена Юсуфом Губайдуллиным в начале 2009-го года.
|
||









Автор: Тимур (2010-04-23 15:20:37)
Найдите там файл "fdc-rus-v-1alpha.rar" - этот файл - русифицированный скрипт