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

Форум для тех кто начинает осваивать язык php.
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

Счётчик скачиваний файлов на 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
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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($fileLOCK_EX); # Отпираем файл
    
$count fread($file100); # Бинарно-безопасное чтение файла
    
$count++; # Прибавляем один к статистики скачиваний 
    
ftruncate($file0); # Стираем файл до заданной длины
    
fwrite($file$count); # Бинарно-безопасная запись в файл
    
flock($fileLOCK_UN); # Записываем в файл
    
fclose($file);  # Закрываем файл
Аватара пользователя
Лeйлa
Сообщения: 38

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

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

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

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

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

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

Вернуться в «PHP»

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

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