Счетчик закачки файлов

Тема в разделе "PHP", создана пользователем BlackvsEvgen, 27 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. BlackvsEvgen

    BlackvsEvgen Постоялец

    Регистр.:
    13 янв 2009
    Сообщения:
    104
    Симпатии:
    3
    Здраствуйте, помогите пожалуйста, нашел скрипт counter.php счетчик такой :

    PHP:
    <?php
    // Счетчик по первому файлу: 
     
    if ($book==1) {
    header("location: http://сайт.ру/APAK2.rar"); 
    $file=fopen("book1.txt","a+");
    flock($file,LOCK_EX); 
    $count=fread($file,100);
    $count++; 
    ftruncate($file,0); 
    fwrite($file,$count); 
    flock($file,LOCK_UN); 
    fclose($file); 
    ?>
    Создал папку кинул туда этот скрипт и файлик book1.txt чтоб туда сохранялись значения, ссылку для скачивания указал вот такую:

    http://сайт.ру/папка/counter.php?book=1

    При нажатие на ссылку закачка не происходит, а просто выдаетса белый экран. Кто знает что я сделал не так или может скрипт не правильно написан?
     
  2. Kirillik

    Kirillik Создатель

    Регистр.:
    22 фев 2009
    Сообщения:
    32
    Симпатии:
    7
    У тебя условие не срабатывает, первую строку замени на:
    PHP:
    if ($_GET['book']==1) {
     
    BlackvsEvgen нравится это.
  3. BlackvsEvgen

    BlackvsEvgen Постоялец

    Регистр.:
    13 янв 2009
    Сообщения:
    104
    Симпатии:
    3
    Все заработало... спасибо, есть веть умные люди ))
     
  4. BlackvsEvgen

    BlackvsEvgen Постоялец

    Регистр.:
    13 янв 2009
    Сообщения:
    104
    Симпатии:
    3
    Kirillik подскажите пожалуйста, сделал этот счетчик, но проблема в том что он считает все переходы по ссылке скачать, даже когда бот переходит, то тоже считает. Как можно сделать чтоб считала именно закачки или на худой конец клики по ссылке Скачать именно людей, а не ботов? Заранее спасибо.

    Ссылка закачки:
    PHP:
    <?php
    if ($_GET['book']==1) {
    header("location: http://localhost/bd/wp-content/uploads/door.zip");
    $file=fopen("book1.txt","a+"); 
    flock($file,LOCK_EX); //Блокировка
    $count=fread($file,100); //Чтение
    $count++; // Увеличение значение на 1
    ftruncate($file,0); // Очищаем файл
    fwrite($file,$count); //Записываем новое значение
    flock($file,LOCK_UN); //Разблокируем
    fclose($file); //Закрываем
    ?>
     
  5. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    Можно отсеивать по юзер-агенту($_SERVER['HTTP_USER_AGENT']). Создать массив недопустимых User-agents(если боты именно по нему палятся) и сверять.

    А вот проверка на "осуществление закачки" мне кажется сомнительно реализуемой - пользователь ведь тоже может нажать на ссылку, а затем в диалоговом окне отменить начало скачивания.
     
  6. everest

    everest

    Регистр.:
    20 дек 2006
    Сообщения:
    197
    Симпатии:
    20
    если ссылка на файл дается из каталога, то можно проверять например HTTP_REFERER, перешел ли пользователь со страницы каталога (страницы, на которой размещена ссылка на файл) или запросил ссылку напрямую...
     
  7. BlackvsEvgen

    BlackvsEvgen Постоялец

    Регистр.:
    13 янв 2009
    Сообщения:
    104
    Симпатии:
    3
    Я просто в php не очень разбираюсь.
    everest мне кажетса это не подойдет.
    А можно сделать чтоб скрипт засчитывал клик сделанный из определенного браузера ? Что поидеи сразу исключит переходы ботов по ссылке. Я просто когда программой Xenu Link Sleuth (она анализирует сайт, кол-во страниц, ссылок, битые ссылки и.т.п.) проверял сайт то заметил что счетчики на всех закачках увеличиваетса на одну.

    Посоветуйте в каком направлении двигатса?

    Alix врорде ваше предложение подходит по ($_SERVER['HTTP_USER_AGENT']) или нет ?
     
  8. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Как я понимаю есть еще вариант все файлы отдавать не напрямую ссылкой на скачку, а через php файл, который будет считывать часть данных из файла потом отдавать клиенту + анализировать как уже писали выше $_SERVER['HTTP_USER_AGENT'] и HTTP_REFERER хотя и то другое можно подделать. Можешь поставить что бы скачка не начиналась пока не введут каптчу что еще более усложнит жизнь ботам.
     
    BlackvsEvgen нравится это.
  9. Alix

    Alix

    Регистр.:
    27 янв 2008
    Сообщения:
    234
    Симпатии:
    84
    BlackvsEvgen, сделай пока в базовой реализации, по User-agent. Там ты можешь и для браузеров определить поведение, создав, как я уже говорил, массив допустимых значений (которые можно без проблем найти в инете).
    Можно дополнительно и referer проверять, но в таком случае если пользователи воспользуются прямой ссылкой на скачивание(например, скопируют и вставят, а не кликнут), скачать они не смогут.
    Естественно, все это не будет 100% защитой, т.к. боты с легкостью могут представляться пользователями. Так что определенная погрешность в счетчике будет, просто сведешь её к минимуму.
     
    BlackvsEvgen нравится это.
  10. everest

    everest

    Регистр.:
    20 дек 2006
    Сообщения:
    197
    Симпатии:
    20
    у меня есть каталог скриптов. закачка происходит через определенные страницы. прямая закачка по прямой ссылке меня не интересует я явлется даже вредной - не показывается сам сайт и реклама на нем.
    по этой причине проверяя реферрера я могу отсеить такие закачну (точнее, это делается скриптом выдачи файла http://сайт.ру/download.php?id=xxx)

    что касается ботов, то их естественно можно отсеить проверяя браузер (только нужно учитывать и разные версии браузеров)
     
    BlackvsEvgen нравится это.
Статус темы:
Закрыта.