Счётчик скачиваний файлов на PHP

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Slash
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Счётчик скачиваний файлов на PHP

Сообщение Slash » Сб авг 11, 2012 6:01 pm

Признаюсь, данный скрипт нашёл в сети. Я все го лишь расскажу как он работает. Сам счетчик - это PHP скрипт. Поэтому он будет работать только на хостинге с поддержкой PHP.
Для создания счётчика создаём файл: counter.php, с содержимым:

Код: Выделить всё

<?php
if ($_GET['book'] == 1)
{
    header("location: http://danfa.org/file.zip");
    $file = fopen("counter/book1.txt", "a+");
    flock($file, LOCK_EX); 
    $count = fread($file, 100);
    $count++; 
    ftruncate($file, 0); 
    fwrite($file, $count); 
    flock($file, LOCK_UN); 
    fclose($file); 
}
?>
Где третья строчка

Код: Выделить всё

header("location: _http://danfa.org/file.zip"); 
указывает путь к файлу, который нужно скачать, четвёртая строчка

Код: Выделить всё

$file=fopen("book1.txt","a+"); 

указывает полный адрес относительно файлу counter.php файла в котором будет храниться статистика скаченного файла, в данном случаи это: book1.txt

Файл counter.php помещаем в корень сайта, файл: book1.txt (пустой) поместим в папку counter. В php документе пишем ссылку такого вида:

Код: Выделить всё

<a href="http://danfa.org/counter.php?book=1">Скачать архив</a>
При нажатии на эту ссылку зачтётся клик, в файле book1.txt на одну единицу статистике станет больше, скрипт выполнит запрос файла и начнётся скачивание файла на компьютер пользователя.
Для отображения статистики закачек, в тот же документ вставляем вот этот код:

Код: Выделить всё

<? include("counter/book1.txt");?>
Для более актуального вида, статистику можно вставить рядом с ссылкой загрузки, в духе:

Код: Выделить всё

Название: <b>PHP скрипт счётчика скачиваний</b><br />
Размер файла: 12.06 kb<br />
Скачали: <? include("counter/book1.txt");?> раз<br />
<a href="http://danfa.org/counter.php?book=1">Скачать архив</a>
Увеличиваем количество файлов для скачивания:
В файл: counter.php дописываем:

Код: Выделить всё

if ($_GET['book'] == 2) 
{
    header("location: http://danfa.org/file_2.zip");
    $file=fopen("counter/book2.txt", "a+");
    flock($file, LOCK_EX); 
    $count=fread($file, 100);
    $count++; 
    ftruncate($file, 0); 
    fwrite($file, $count); 
    flock($file, LOCK_UN); 
    fclose($file); 
} 
Должно получиться так:

Код: Выделить всё

<?php
if ($_GET['book'] == 1) 
{
    header("location: http://danfa.org/file.zip");
    $file=fopen("counter/book1.txt", "a+");
    flock($file, LOCK_EX); 
    $count=fread($file, 100);
    $count++; 
    ftruncate($file, 0); 
    fwrite($file, $count); 
    flock($file, LOCK_UN); 
    fclose($file); 
}

if ($_GET['book'] == 2) 
{
    header("location: http://danfa.org/file_2.zip");
    $file=fopen("counter/book2.txt", "a+");
    flock($file, LOCK_EX); 
    $count=fread($file, 100);
    $count++; 
    ftruncate($file, 0); 
    fwrite($file, $count); 
    flock($file, LOCK_UN); 
    fclose($file); 
}
?>
В папку counter заливаем файлик book2.txt (пустой), добавляем ссылку:

Код: Выделить всё

<a href="http://danfa.org/counter.php?book=2">Скачать архив</a>
и выводим статистику:

Код: Выделить всё

<?php include("counter/book2.txt");?>
То есть делаем всё то же самое, только меняем цифру один (1) на два (2). Таким же образом добавляем третий файл, четвёртый, пятый, и т.д.

Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Re: Счётчик скачиваний файлов на PHP

Сообщение Slash » Вт мар 17, 2015 3:41 pm

Хочу рассказать, что и как происходит в коде данного счетчика. Для понимания добавил комментарии к коду:

Код: Выделить всё

<?php
if ($_GET['book'] == 1) # Условие срабатывает, если был осуществлён переход по ссылке counter.php?book=2 (метод GET) 
{
    header("location: http://danfa.org/file.zip"); # Переадресация к файлу 
    $file = fopen("counter/book1.txt", "a+"); # Открываем файл book1.txt в режиме чтения и записи
    flock($file, LOCK_EX); # Отпираем файл
    $count = fread($file, 100); # Бинарно-безопасное чтение файла
    $count++; # Прибавляем один к статистики скачиваний 
    ftruncate($file, 0); # Стираем файл до заданной длины
    fwrite($file, $count); # Бинарно-безопасная запись в файл
    flock($file, LOCK_UN); # Записываем в файл
    fclose($file);  # Закрываем файл
} 

Аватара пользователя
Лeйлa
Сообщения: 38
Зарегистрирован: Ср апр 08, 2015 9:42 am

Re: Счётчик скачиваний файлов на PHP

Сообщение Лeйлa » Вт май 05, 2015 1:52 pm

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

lyod
Сообщения: 75
Зарегистрирован: Пн янв 06, 2014 11:13 pm
Поблагодарили: 1 раз

Re: Счётчик скачиваний файлов на PHP

Сообщение lyod » Пт май 15, 2015 3:51 pm

Конечно можно.

Ответить Пред. темаСлед. тема

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя