Текущий архив: 2006.01.15;
Скачать: CL | DM;
Вниз
Даунлоад на php. Подсчет кол-во скачиваний. Найти похожие ветки
← →
SergP. (2005-12-10 13:21) [0]Нужно написать скрипт для даунлоада (чтобы подсчитывать кол-во раз скачиваний).
пишу пока так:
<html>
<head>
<title>[Downloads]</title>
<meta http-equiv="Content-Type" CONTENT="text/html; charset=windows-1251">
<?
$id=$HTTP_GET_VARS["id"];
include("config.php");
@mysql_query("update download set counter=counter+1 where id=$id");
$result=mysql_query("select filename,coment from download where id=$id");
$line=mysql_fetch_array($result);
print "<META http-equiv="refresh" content="2;URL=";
print "$line[0]";
print ""></head><body>";
print "Скачивание начнется через 2 секунды<br>";
print "Если Ваш браузер не поддерживает перенаправление,<br>";
print "то для скачивания перейдите по ссылке<br>";
print "<a href="";
print "$line[0]";
print """;
print ">$line[1]<a><br>";
print "</body>";
?>
</html>
Возникает проблема в том что если юзер начнет нажимать "обновить" или еще что-нить делать, то счетчик будет каждый раз увеличиваться, т.е. не будет правильно отображать реальное кол-во скачиваний.
Как попроще устранить эту проблему?
← →
boriskb © (2005-12-10 13:24) [1]http://www.webscript.ru/
← →
VirEx © (2005-12-10 14:37) [2]у меня примерно такая же проблема но мне Kerk посоветовал если на серваке стоит Апач, и есть модуль mod_rewrite, то нужно в корневой папке сайта записать файл .htaccess, он умеет перенаправлять все запросы через какойнить скрипт и вообще настраивает поведение сервера насчет запросов с клинетских машин, только я в синтаксисе вообще разобраться не могу... ну примерно что-то вот такое:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/index.php
RewriteCond %{QUERY_STRING} "^action=downloadfile"
RewriteRule .* /compat.cgi [L,NS]
← →
Kerk © (2005-12-10 14:39) [3]VirEx © (10.12.05 14:37) [2]
Не о том, тут речь. Не о том :)
← →
boriskb © (2005-12-10 15:02) [4]VirEx © (10.12.05 14:37) [2]
папке сайта записать файл .htaccess
А апач сам сконфигурируется?
Судя по названию файла, подразумевается тонкая настройка апача.
← →
Kerk © (2005-12-10 15:08) [5]boriskb © (10.12.05 15:02) [4]
А апач сам сконфигурируется?
Сам. В приведенном примере Апач перенаправляет все запросы файла index.php, где есть параметр action=download на скрипт compat.cgi с сохранением параметров. Файла index.php у меня вообще нет. На старом движке был, теперь нет. Но все старые ссылки, благодаря .htaccess, работают.
← →
boriskb © (2005-12-10 16:02) [6]Kerk © (10.12.05 15:08) [5]
Тыды ОЙ :)
← →
Kerk © (2005-12-18 15:38) [7]Пишем в .htaccess
RewriteEngine on
RewriteCond %{REQUEST_URI} zip$
RewriteRule .* /counter.php?%{REQUEST_URI} [L,NS]
Далее скрипт counter.php должен увеличить счетчик и выдать файл. Имя запрашиваемого файла будет находиться в переменой окружения QUERY_STRING.
ИМХО, такое решение оптимально, т.к. и счетчик есть и ссылка на файл - прямая.
← →
Piter © (2005-12-18 15:53) [8]SergP. (10.12.05 13:21)
Возникает проблема в том что если юзер начнет нажимать "обновить" или еще что-нить делать, то счетчик будет каждый раз увеличиваться
ну естественно, а как еще? У счетчиков такие же проблемы - есть лично хостов, а есть число уникальных посетителей.
С достаточной степенью точности можешь сделать так - при скачивании добавляй IP в бан-лист минут на 20-30. Если IP уже в бан листе - то счетчик не должен увеличиваться.
Еще способ - при скачиании файла прописывай соответствующий параметр в куках. Соответственно, если в куках уже есть запись о скачивании этого файла - счетчик не увеличивается.
Можно сделать компбинацию этих методов.
А по другому никак :(
SergP. (10.12.05 13:21)
print "<META http-equiv="refresh" content="2;URL=";
print "$line[0]";
print ""></head><body>";
идеологически неправильно. Если на хостинге PHP скрипту разрешено формировать заголовок, то:header("Location: http://www.example.com/test.zip");
Читаем: http://php.rinet.ru/manual/ru/function.header.php
В этом случае не просто перенаправление средствами HTML, а именно заголовок HTTP ответа будет установлен в код перенаправления, что куда правильнее, это поддерживают все браузеры, менеджеры закачек и т.д.
Kerk © (18.12.05 15:38) [7]
алее скрипт counter.php должен увеличить счетчик и выдать файл. Имя запрашиваемого файла будет находиться в переменой окружения QUERY_STRING
это ты автору темы советуешь? А при чем здесь проблема обновления и увеличения счетчика?
Кстати, не рекомендую пользоваться mod_rewrite - средство, конечно, универсальное, но оно неоправданно грузит сервер, да и не на всех хостингах этот модуль подключен...
← →
Piter © (2005-12-18 15:54) [9]boriskb © (10.12.05 15:02) [4]
папке сайта записать файл .htaccess
А апач сам сконфигурируется?
Судя по названию файла, подразумевается тонкая настройка апача
хех :)))
.htaccess к тонкой настройке апача не имеет никакого отношения :)
Данный файл используется почти всеми, кто работает с апачем нормально :)
← →
Kerk © (2005-12-18 16:01) [10]Piter © (18.12.05 15:53) [8]
А при чем здесь проблема обновления и увеличения счетчика?
При том, что его счетчик идеологически неправильный. Я показал как надо. Предлагаемый мной метод более универсальный. Ссылку типа site.ru/download.php?id=234 ты ни в какой софт-архив не запостишь. А site.ru/file.zip - легко. К тому же выглядит оно более user-friendly.
> Кстати, не рекомендую пользоваться mod_rewrite
Не рекомендуй. От этого большинство сайтов им пользоваться не перестанут.
← →
Kerk © (2005-12-18 16:06) [11]А если вынести все файлы на отдельный домен, например.. типа dl.site.ru/file.zip .. и .htaccess сделать только в этом домене, то вообще красота получается.
← →
Piter © (2005-12-18 16:07) [12]Kerk © (18.12.05 16:01) [10]
Я показал как надо
как ты показал - так не надо :)
Kerk © (18.12.05 16:01) [10]
типа site.ru/download.php?id=234 ты ни в какой софт-архив не запостишь. А site.ru/file.zip - легко
хм, не понял логики. Ну а почему бы не сделать ссылки вида: site.ru/file.zip ? Зачем тут mod_rewrite?
Kerk © (18.12.05 16:01) [10]
Не рекомендуй. От этого большинство сайтов им пользоваться не перестанут
опять ты в Бога играешь. Откуда ты знаешь про большинство? Статистику делал?
И какой же хороший, популярный сайт использует mod_rewrite?
Профессиональные PHP программеры не используют mod_rewrite, потому что в этом зачастую просто нет необходимости, а при этом он не везде поддерживается, да еще и сервер загружает. Что при десятках тысяч запросов очень даже проявит себя.
← →
Kerk © (2005-12-18 16:11) [13]Piter © (18.12.05 16:07) [12]
Ну а почему бы не сделать ссылки вида: site.ru/file.zip ? Зачем тут mod_rewrite?
Потому, что без mod_rewrite мы количество скачиваний не посчитаем. А если охота в логи лезть, то тут вообще никаких счетчиков не надо.
> И какой же хороший, популярный сайт использует
> mod_rewrite?
Ну из того, что под руку попалось - http://sport-express.ru/
Почитай что-нибудь про псевдостатику, может, поймешь о чем я.
> Профессиональные PHP программеры не используют
> mod_rewrite
Полный бред. Использование mod_rewrite зачастую не связано с программированием вообще.
← →
boriskb © (2005-12-18 16:16) [14]Piter © (18.12.05 15:54) [9]
.htaccess к тонкой настройке апача не имеет никакого отношения :)
Не будь нудней чем я :)
Этот файл имено для настройки и предназначен.
А уж "тонко" или "толсто" это у кого как получится :))
← →
Piter © (2005-12-18 16:18) [15]Kerk © (18.12.05 16:11) [13]
Потому, что без mod_rewrite мы количество скачиваний не посчитаем
что за бред? PHP скрипт начисляет счетчик, перенаправляет к реальному месторасположению файла - какая разница, есть mod_rewrite или нет?
Kerk © (18.12.05 16:11) [13]
Ну из того, что под руку попалось - http://sport-express.ru/
а с чего ты взял, что они используют mod_rewrite?
← →
Kerk © (2005-12-18 16:24) [16]Piter © (18.12.05 16:18) [15]
PHP скрипт начисляет счетчик, перенаправляет к реальному месторасположению файла
Ссылку вида site.ru/dl.php?id=1322 в ни в какой софтархив не примут. Все требуют прямые ссылки.
> а с чего ты взял, что они используют mod_rewrite?
С того, что там используется очевидная псевдостатика? (ты про нее уже почитал?)
Посмотри как выглядят ссылки на статьи - http://news.sport-express.ru/online/ntext/11/nl113100.html
Неужели ты думаешь, что у них такая дикая привычка называть папки и файлы числами?
Url содержит параметры для запроса к БД. Файла /online/ntext/11/nl113100.html на сервере не существует, то что мы видим в браузере - результат деятельности скрипта.
Использование псевдостатики очень распространено в инернете.
Вот тебе еще пример - http://lenta.ru/
← →
Piter © (2005-12-18 16:33) [17]Kerk © (18.12.05 16:24) [16]
Хех, можно даже сказать ЛОЛ, я понял :)
Да ты получается таких элементарных вещей не знаешь, а уверен в себе, как архангел Гавриил (хотя ты бы не был Kerk"ом, если б было не так :)
Еще про псевдостатичку говоришь :)
Ты, судя по всему, решил, что ссылки вроде: domen.com/file.zip без mod_rewrite никак не реализовать. Странное заблуждение.
Рассказываю тогда. В .htaccess просто пишешь:ErrorDocument 403 /redirect.php
ErrorDocument 404 /redirect.php
Соответственно, в скрипте redirect.php обрабатываешь URL и сам редиректишь куда надо. Это и богаче по возможностям, чем mod_rewrite, и эффективнее, если все правильно писать (по крайней мере, если PHP как модуль подцеплен).
← →
Piter © (2005-12-18 16:35) [18]Kerk © (18.12.05 16:24) [16]
осмотри как выглядят ссылки на статьи - http://news.sport-express.ru/online/ntext/11/nl113100.html
Kerk © (18.12.05 16:24) [16]
Вот тебе еще пример - http://lenta.ru/
соответственно, почему ты решил, что там используется mod_rewrite - я не понял.
← →
Kerk © (2005-12-18 16:38) [19]Piter © (18.12.05 16:33) [17]
ErrorDocument 403 /redirect.php
ErrorDocument 404 /redirect.php
Это еще что за бред? А если запрашиваемый файл на диске есть что произойдет? Ты не пытайся прикрутить сюда то, что для этого явно не предназначено.
А про псевдостатику почитай.
← →
Kerk © (2005-12-18 16:39) [20]Piter © (18.12.05 16:35) [18]
соответственно, почему ты решил, что там используется mod_rewrite - я не понял.
А я на это даже и не надеялся. Тебя только личные свидетельства админов этих сайтов убедят в чем-то и то врядли. Ибо спорить ради спорить.
← →
Piter © (2005-12-18 16:40) [21]Kerk © (18.12.05 16:38) [19]
Это еще что за бред? А если запрашиваемый файл на диске есть что произойдет?
ты лучше сам почитай. А еще лучше исходники профессиональных скриптов посмотри.
Это комманда для Апача, если файл не найден - перенаправление на скрипт redirect.php
← →
Kerk © (2005-12-18 16:40) [22]Piter © (18.12.05 16:40) [21]
Это комманда для Апача, если файл не найден - перенаправление на скрипт redirect.php
Ну так а что произойдет, если файл найден?
← →
Piter © (2005-12-18 16:42) [23]Kerk © (18.12.05 16:38) [19]
А если запрашиваемый файл на диске есть что произойдет?
тогда ошибки 404 не будет, блин и произойдет обращение к этому файлу, который существует.
Ты хоть знаешь, что за код ошибки 404 в HTTP?
← →
Kerk © (2005-12-18 16:43) [24]Piter © (18.12.05 16:42) [23]
тогда ошибки 404 не будет, блин и произойдет обращение к этому файлу, который существует.
А нам этого не надо. Нам надо все запросы редиректить.
> Ты хоть знаешь, что за код ошибки 404 в HTTP?
Пальцы разогни, гнутые тебе не идут.
← →
Piter © (2005-12-18 16:43) [25]Kerk © (18.12.05 16:39) [20]
А я на это даже и не надеялся. Тебя только личные свидетельства админов этих сайтов убедят в чем-то и то врядли
ок, а я тебе говорю - на сайте lenta.ru не используется mod_rewrite.
Если будет возражать, то скажу, что тебя ничего не убедит.
← →
Kerk © (2005-12-18 16:46) [26]Piter © (18.12.05 16:43) [25]
Вот я об этом и говорю. Демагогией занимаешься.
Ты про то, как делается псевдостатика уже почитал?
Ты действительно думаешь, что перенаправить юзера на redirect.php, разобрать там параметры и перенаправить на нужный скрипт меньше грузить сервер, чем разбор параметров в .htaccess и перенаправление сразу на нужный скрипт? LOL
← →
Piter © (2005-12-18 16:47) [27]Kerk © (18.12.05 16:43) [24]
А нам этого не надо. Нам надо все запросы редиректить
ну ты уже заговорился, Kerk.
Итак, у тебя РЕАЛЬНО существует файл на сервере:
kerkzone.com/file.zip
Пользователь обращается к этому файлу. Этот файл скачается? НЕЕЕТ. Ведь Kerk"у нужно все запросы редиректить, итак запускается скрипт. Он подсчитывает количество скачек... и? Куда он будет редиректить?
Опять на: kerkzone.com/file.zip ???
Открою секрет - опять сработает правило mod_rewrite и ... Твой сервак вместе с клиентом уйдет в бесконечную рекурсию.
Или как у тебя организовано?
Физически есть файл:
kerkzone.com/file.zip
Но есть еще его копия:
dl.kerkzone.com/file.zip
Куда ты и редиректишь. А нафига тогда спрашивается тебе дубликаты на сервере?
Как-то нелогично, ты не находишь?
← →
Kerk © (2005-12-18 16:50) [28]Piter © (18.12.05 16:47) [27]
Открою секрет - опять сработает правило mod_rewrite и ... Твой сервак вместе с клиентом уйдет в бесконечную рекурсию.
Не сработает. Я не буду делать никаких 301 или 302. Я выдам файл самим скриптом.
← →
Piter © (2005-12-18 16:53) [29]Kerk © (18.12.05 16:46) [26]
что перенаправить юзера на redirect.php, разобрать там параметры и перенаправить на нужный скрипт меньше грузить сервер, чем разбор параметров в .htaccess и перенаправление сразу на нужный скрипт? LOL
Что ЛОЛ? Ты сейчас неправ, и пытаешься сделать хорошую мину при плохой игре. Только что вообще чушь написал, о чем я тебе в [27] рассказал.
Ты не знал об этом способе перенаправления - и тут же попытался найти в нем недостаток, даже не подумав.
Теперь ты утверждаешь о скорости работы, хотя я уверен, что у тебя никаких сведений по этому поводу нету, только твои предположения.
Я, кстати, сказать тоже экспериментов не ставил, но я хотя бы читал статьи владельцев крупных серверов, которые писали насколько меньше грузит сервер данный способ в отличии от mod_rewrite.
Почему так происходит? Не знаю, но это факт. По крайней мере, когда PHP как модуль установлен.
← →
Kerk © (2005-12-18 16:54) [30]Piter © (18.12.05 16:47) [27]
Как-то нелогично, ты не находишь?
Все полностью логично. Не надо пытаться использовать для редиректа то, что в общем случае для редиректа не предназначено - 404. Или ты предлагаешь при написании движка сайта задокументировать имена файлов, которые нельзя использовать?
← →
Kerk © (2005-12-18 16:56) [31]Piter © (18.12.05 16:53) [29]
Ты, если на кого-то ссылаешься, давай ссылку. Иначе - пустой треп.
> Теперь ты утверждаешь о скорости работы, хотя я
> уверен, что у тебя никаких сведений по этому поводу
> нету, только твои предположения.
А подумать не пробовал? В варианте с 404 мы имеем на один шаг больше - вызов промежуточного скрипта.
← →
Piter © (2005-12-18 16:58) [32]Kerk © (18.12.05 16:50) [28]
Я не буду делать никаких 301 или 302. Я выдам файл самим скриптом
и ты это называешь хорошей идеей?
Это еще больше затормозит работу сервера, если ты вручную будешь передавать файл. Представляешь, какое время работы будет у скрипта, если начнет качать Dial-Up"щик файл размером мегабайт в 10 хотя бы?
А если скачек тысячи? Тысячи одновременно запущенных сриптов отдачи? Не смеши, это не оптимально.
Опять же это изобретение велосипеда, тебе нужно будет в скрипте реализовать докачку файла и т.д.
Отдавать файлы апач сам идеально умеет, это его основополагающая функция.
← →
Kerk © (2005-12-18 17:02) [33]Piter © (18.12.05 16:58) [32]
и ты это называешь хорошей идеей?
Это хорошая идея для случаев, когда нужно контролировать скачивание файлов. Тогда доступ к папке с файлами можно вообще закрыть для юзеров.
Для файлопомойки, конечно, не оптимально.
← →
Piter © (2005-12-18 17:02) [34]Kerk © (18.12.05 16:56) [31]
Ты, если на кого-то ссылаешься, давай ссылку
например, http://kpnemo.ru
И всякие отзывы о сайте можешь оставить при себе. Движок написан крайне грамотно,
Kerk © (18.12.05 16:54) [30]
Не надо пытаться использовать для редиректа то, что в общем случае для редиректа не предназначено - 404
что значит не предназачено? У тебя более глубокие доводы против этого способа есть?
Файла нет - возникает ошибка 404, происходит перенаправление на файл-скрипт. Он там опять же может установить 404, может что угодно сделать. Что не так?
Kerk © (18.12.05 16:56) [31]
А подумать не пробовал? В варианте с 404 мы имеем на один шаг больше - вызов промежуточного скрипта
думать ты можешь сколько угодно. Я тебе назвал экспериментальный файл. Еще раз, ПОЧЕМУ так происходит - я не знаю. Но так происходит.
Ты можешь упереться рогом и говорит, что так НЕ ДОЛЖНО быть. Но ведь так есть.
← →
Piter © (2005-12-18 17:07) [35]Kerk © (18.12.05 17:02) [33]
Это хорошая идея для случаев, когда нужно контролировать скачивание файлов
ты говорил про оптимальность. Твой способ НЕ оптимальный.
mod_rewrite более медленный способ по сравнению с тем, что я привел.
Собственно, если тебе так нравится выдавать файлы с помощью скрипта - дело твое, но использование mod_rewrite совершенно лишнее.
← →
Kerk © (2005-12-18 17:17) [36]Piter © (18.12.05 17:02) [34]
что значит не предназачено? У тебя более глубокие доводы против этого способа есть?
Есть:
Или ты предлагаешь при написании движка сайта
задокументировать имена файлов, которые нельзя
использовать?
> Но ведь так есть.
Конечно. Ты как всегда прав.
P.S. А про то как работает псевдостатика. Вообще полезно иногда читать что-нибудь кроме блогов. С тобой как всегда скучно.
http://forum.searchengines.ru/showthread.php?t=31433
http://forum.searchengines.ru/showthread.php?t=29941
Piter © (18.12.05 17:07) [35]
Да, да, да, ты прав! Добей меня танцем!
← →
Piter © (2005-12-18 18:03) [37]Kerk © (18.12.05 17:17) [36]
Или ты предлагаешь при написании движка сайта
задокументировать имена файлов, которые нельзя
использовать?
а какие имена нельзя использовать в моем способе?
Kerk © (18.12.05 17:17) [36]
Конечно. Ты как всегда прав.
Судя по тону фразы, ты как раз считаешь, что я не прав. Ну и в чем я не прав? У тебя хоть какие-то аргументы есть?
Я тебе назвал свои аргументы. Точнее, они даже не мои. Но ты просил линк - я дал тебе линк.
Ты же не привел НИЧЕГО.
Более того, ты об этом способе вчера даже еще не знал! Что не помешало тебе буквально в течении 10 минут сделать вывод, что способ, конечно, куда хуже, чем mod_rewrite.
Ты сейчас заведешь полемику куда угодно, но никогда не скажешь - "да, блин, не знал - надо попробовать".
Более того, когда ты подумаешь впоследствии - вполне возможно ты начнешь использовать данный способ.
Kerk © (18.12.05 17:17) [36]
Вообще полезно иногда читать что-нибудь кроме блогов
да, да. И дает ссылку на форум. Форум, конечно, куда более правдивое средство информации, чем блог. Даже не чем блог, а чем информация от владельца ОЧЕНЬ популярного блога. Человека, который САМ этот блог пишет, а не просто поставил готовые скрипты.
Kerk © (18.12.05 17:17) [36]
http://forum.searchengines.ru/showthread.php?t=31433
http://forum.searchengines.ru/showthread.php?t=29941
И что? Я там даже не нашел упоминаний о способе, который привел.
Более того, на вопрос:
"Или может кто знает другой способ как страницы в псевдостатику перевести"
никто не привел "моего" способа.
И даже судя по репликам, типа:
"http://gazeta.ru/2005/12/07/oa_180712.shtml
Они, наверное, не знают, что Николай Попков перестраховывается? Я в смысле, что нагрузка у газеты как у сотни попковых"
они также как и ты раньше, просто и не знают других способов. Они также уверены, что если видят ЧПУ-урл, то значит это mode_rewrite.
Ну и нафиг ты дал ссылку на эти топики? Сосвсем аргументов нет? :)
← →
Piter © (2005-12-18 18:07) [38]Kerk © (18.12.05 17:17) [36]
С тобой как всегда скучно
несомненно. Фактически я доказал, что ты неправ, я привел аргументы, хотя бы мнения других, известных более-менее людей. Ты же по теме:
mode_rewrite vs ErrorDocument
не привел ни одного аргумента. Да и как ты мог их привести, если о втором узнал пару часов назад. Только в стиле "Сам подумай, ведь ДОЛЖНО быть ..."
← →
Piter © (2005-12-18 18:07) [39]Piter © (18.12.05 18:07) [38]
Фактически я доказал, что ты неправ
так что с чего бы тебе было со мной весело :)
← →
Piter © (2005-12-18 18:09) [40]Я даже знаю, как ты будешь комментировать мою фразу:
"Фактически я доказал, что ты неправ"
Ты применишь стандартный демагогический прием:
"Да, ты бог, ты конечно прав, мы все тебе поклоняемся, о великий Piter".
То есть, начнешь юродствовать за неименение аргументов :)
P.S. Хотя после этого поста уже не начнешь :)
Страницы: 1 2 вся ветка
Текущий архив: 2006.01.15;
Скачать: CL | DM;
Память: 0.59 MB
Время: 0.014 c