Подсчет количества загрузок файла (скачать)

      Однажды в одной рассылке, цель которой - отвечать на вопросы начинающих сайтостроителей был задан вопрос: "Как осуществить подсчет числа закачек какого-нибудь файла, хранящегося на сайте, если нет поддержки CGI на сервере?" Основным и самым главным недостатком этой рассылки (и подобных ей), на мой взгляд, является то, что ответы на вопросы дают такие же подписчики (непрофессионалы). О результатах такой помощи вы можете судить сами. Более половины ответов вообще не совпадают по смыслу с вопросом. Вопросы повторяются из выпуска в выпуск. Например, какой-нибудь ламер проснулся с утра, почесал репу и давай писать вопросы, хотя ответы на них уже были в ранних выпусках.
      Ну так вот, на вышеприведенный вопрос был опубликован ответ. Нечто, типа: "…это можно реализовать только с помощью CGI и никак иначе, так что переезжай на сервер с поддержкой CGI…" и далее предлагался список этих самых хостов.
      Передо мной никогда не стояла проблема подсчета количества закачек, поэтому я согласился с тем, что без CGI не обойтись и забыл про этот вопрос. Но потом я подумал, что если нельзя использовать CGI, то нужно пользоваться тем, что есть. И мне в голову пришла следующая мысль. Ведь есть же в Интернете сайты, предлагающие бесплатные голосования. А что если взять и переделать бесплатное голосование, чтобы оно считало количество закачек. Для экспериментов был выбран сервис расположенный на http://opros2000.ru. Он работает достаточно быстро и я уже имел с ним дело ранее.
      Итак, допустим у нас на сайте есть пять файлов, предложенных посетителям для скачивания (file1, file2 … file5). Заходим на вышеупомянутый ресурс и регистрируем новое голосование. Сначала предлагается написать вопрос. Пишем все что угодно, он нам не пригодится. Далее вместо ответов на данный вопрос пишем пять строк с названиями хранящихся у нас файлов. Ниже предлагается выбрать тип голосования. Выбираем тип: множественный выбор. Это большого значения не имеет. И последнее, что предлагается указать, это открывать окно результатов в новом окне или в старом. Выбираем в старом, хотя это тоже не очень существенно. После этого нажимаем "Готово" и генерируем код голосования. Перед тем как непосредственно перейти к изменению кода и внесению его в свой сайт, желательно зайти в раздел "Защита от накрутки" и изменить там два параметра. По умолчанию там оба числа равны 24. Заменяем на нули. Это позволит посчитать все закачки, в том случае, если один посетитель будет качать несколько файлов.
      Итак, код, который в конечном итоге сгенерируется, будет выглядеть примерно следующим образом.

<!-- Begin OPROS2000 Form -->
<p>Число закачек</p>
<form method="get" 
action="http://opros2000.ru/2000/fast-cgi-bin/opros.fcgi" name="opros">
<input type="checkbox" name="2123" value="1" unchecked>
file1<br>
<input type="checkbox" name="2124" value="1" unchecked>
file2<br>
<input type="checkbox" name="2125" value="1" unchecked>
file3<br>
<input type="checkbox" name="2126" value="1" unchecked>
file4<br>
<input type="checkbox" name="2127" value="1" unchecked>
file5<br>
<input type="hidden" name="id" value="9999">
<input type="submit" value="Submit">
</form>
<!-- End OPROS2000 Form -->

      Из всего этого нам понадобится лишь строка с адресом скрипта и параметры "name" каждого чекбокса (в данном примере это: 2123, 2124 …2127). Все остальное можно выкинуть.
      Теперь переходим непосредственно к нашему сайту. Допустим у нас есть такая страница:

Скачайте эти файлы:

Файл 1
Файл 2
Файл 3
Файл 4
Файл 5


Код будет выглядеть следующим образом:

…
<center><h3><font color="ffffff">Скачайте эти файлы:</font></h3>
<a href="file1.zip">Файл 1</a><br>
<a href="file2.zip">Файл 2</a><br>
<a href="file3.zip">Файл 3</a><br>
<a href="file4.zip">Файл 4</a><br>
<a href="file5.zip">Файл 5</a><br></center>
…

Для начала создадим слой в который будут загружаться результаты. Для этого в любом месте страницы пишем:

<IFRAME FRAMEBORDER=0 HEIGHT=1 WIDTH=1 NAME="download" SCROLLING=NO>
</IFRAME>

Теперь, чтобы нажатие на ссылку у нас засчитывалось как скачивание нужно в каждую ссылку добавить событие onClick следующим образом. Например первая ссылка будет выглядеть так.

<a href="file1" onClick="document.download.location.href = 
'http://opros2000.ru/2000/fast-cgi-bin/opros.fcgi?2123=1&id=9999'>
Файл 1</a>

Для следующих ссылок меняем только число 2123 на соответствующее одному из пяти файлов. Так, ссылка для скачивания пятого файла будет следующая:

<a href="file5" onClick="document.download.location.href = 
'http://opros2000.ru/2000/fast-cgi-bin/opros.fcgi?2127=1&id=9999'>
Файл 5</a>

Недостатком такого метода подсчета является то, что мы не можем вписать результаты подсчета в нашу страницу и показать их посетителям. Этот метод, так сказать, только для себя. Можно конечно добываить в код страницы нечто типа:

<a href='http://opros2000.ru/2000/fast-cgi-bin/opros.fcgi?id=9999'>
результаты</a>

И тогда в новом окне будет загружаться график, на котором числом указано количество закачек. Но там еще будет другая ненужная в нашей ситуации информация, которая может сбить посетителя с толку. Будет указано процентное соотношение, и написано "общее число проголосовавших", которое в нашем случае ни что иное, как общее количество закачанных файлов. В общем это будет выглядеть не очень эстетично и не профессионально. А если использовать этот скрипт для себя, и ни кому не показывать, то никто и не заподозрит, что вы используете систему голосования. По крайней мере, в нашем случае визуально ничего не заметно. И при нажатии на ссылку будет скачиваться файл и никаких признаков скриптов проявляться не будет.
      Этот способ я использовал у себя на сайте в разделе "Ростов", где предлагается скачать гимн Ростовской области. Можете проверить, там абсолютно не видно никакой деятельности скрипта.
      Этот способ также можно использовать для подсчета числа загрузок отдельных страниц сайта. Для этого просто пишите все не в onClick, а в onLoad и помещаете в тег <body>. В принципе им можно пользоваться для подсчета чего угодно. Например я также пользуюсь им для подсчета количества распечатанных страниц моего сайта.

Автор: Jimy SHADE
Сайт независимого дизайнера



© журнал принадлежит Web Creation
по всем вопросам обращаться А. Кузьмин