Лічильник скачування файлів

14

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

Лічильник скачування файлівЛічильник скачування файлів

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

Отже, в даному уроці нам з Вами необхідно реалізувати лічильник скачування файлів на сторінках сайту. Отже, насамперед необхідно визначитися, де ми будемо зберігати результат підрахунку скачування того чи іншого файлу. На мій погляд, найкращим рішенням є база даних. Тому створимо базу даних dc, в якій далі по ходу уроку створимо дві таблиці – по одній для кожного варіанту реалізації лічильника завантажень.

Варіант №1

Отже, для першого варіанту створюємо таблицю count1 в базі даних dc, з двома полями:

name – поле для зберігання імені файлу (тип даних String). Важливе зауваження: імена файлів повинні бути унікальними, а значить не можна допускати повторень у даному стовпці. Тому цього поля необхідно присвоїти індекс UNIQUE (якщо одному з полів таблиці присвоєно даний індекс, що означає в даному полі можуть міститися тільки унікальні дані, тобто вставка повторюваного значення приведе до помилки).

count – кількість скачування файлу (тип даних Integer). Значення даного поля за замовчуванням – 1.

SQL – запит для створення таблиці в базі даних.


— Структура таблиці `count1`
CREATE TABLE IF NOT EXISTS `count1` (
`name` varchar(255) NOT NULL,
`count` int(11) NOT NULL DEFAULT ‘1’,
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Тепер давайте визначимося з логікою роботи скрипта. Спочатку, в базі даних немає жодного запису. Файли для скачування, зберігаються в окремій папці на нашому сайті (в моєму випадку – це папка files), і виводяться на його сторінках у відповідності з його завданнями і дизайном.

Для даного уроку я створив сторінку, яка виводить імена всіх файлів, у вигляді посилань розташованих в папці files. Важливо — шлях кожної посилання – не має вести безпосередньо на файл. Бо нам, необхідно вести облік скачування. Значить кожна посилання, повинна перенаправляти користувача скрипт обробник, тобто файл, який підрахує кількість скачування певного файлу і віддасть його користувачеві на скачування. При цьому ім’я файлу для скачування, будемо передавати, використовуючи метод GET, тобто через адресний рядок. Отже, першим ділом створимо файл конфігурації d_conf.php:

В даному файлі створимо константи з налаштуваннями для підключення до бази даних (HOST, USER, PASS, DB), так само додамо константу DIR – шлях до файлів для скачування. А також масив $types – типи файлів, допустимі для завантаження.

Далі створимо файл d_func.php, в якому будуть описані функції, необхідні для роботи програми в цілому. Створимо першу функцію connect(), яка буде виконувати підключення до бази даних, використовуючи розширення php – mysqli (покращений движок по роботі з СУБД MySql). Тому дана функція буде повертати ідентифікатор відкритого з’єднання, який нам потрібен для подальшої роботи. Код функції connect():

function connect() {
$db = mysqli_connect(HOST,USER,PASS,DB);
if(mysqli_connect_error($db)) {
exit(mysqli_connect_error($db);
}
return $db;
}

Тепер, так як ми умовилися, що в таблицю count1, буде записана інформація про завантажуваних файлів (ім’я та кількість скачувань), значить опишемо наступну функцію get_count(), яка отримає всю інформацію з даної таблиці. І як результат поверне масив, в кожній клітинці якого буде міститися ім’я файлу (ключ клітинки) і кількість його скачувань (значення клітинки):

function get_count($db) {
$query = «SELECT name,count FROM count1»;
$result = mysqli_query($db,$query);
$arr = array();
for($i = 0; $i < mysqli_num_rows($result);$i++) {
$row = mysqli_fetch_assoc($result);
$arr[$row[‘name’]] = $row[‘count’];
}
return $arr;
}

Файл, який виводить список файлів з папки files, у вигляді посилань, виглядає наступним чином: