Счетчик

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Ответить
CoSmoS
Сообщения: 13
Зарегистрирован: 04 фев 2007, 17:46

Здравствуйте.
Помогите пожалуйста.
Я хочу сделать счетчик скачивания файлов без открытия новых окон.
Типа я даю ссылку прямо на файл, но в это время другой скрипт считает скачку.
Скажите это возможно сделать на PHP и допустим Jscript? Если да то как?
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

на чистом PHP проблематично будет

если даётся прямая ссылка, то можно подменить при помощи настроек серевера (например Apach) вызывая "как бы" прямой адрес, пользователь на самом деле попадает на php скрипт, который инкрементирует счётчик и либо перенаправляет пользователя на настоящий файл (что грубо и видно через просмотр HTTP заголовков), либо сам выдаёт header с типом скачиваемого файла и всё содержание нужного файла

если правильно написать, то может быть очень даже красиво
правда с настройкой сервера тоже прийдётся поморочиться

другой вариант намного проще: на JavaScript отлавливать нажатие на ссылку и посылать (через невидимый фрейм или AJAX) информацию о том, что на ссылку нажали

мне он не нравится, ибо как-то получается, что это не счётчик, сколько раз пользователи пытались скачать файл, а сколько раз была нажата ссылка

тут ещё вопрос, что считать: левые кнопки, правые, или все?
если левые, то не будет учитываться "Right Click / Save as"
если правые, то не обязательно пользователь будет нажимать "Save as"
а если пользователь при помощи кнопки TAB добредёт до этой ссылки и нажмёт Enter, то скачивание вообще не будет посчитано

конечно же можно исходить из того, что большинство пользователей - "нормальные" и будут делать всё, как надо
(особенно если интересует просто какое-то среднее число),
но если это критично (например, если файл не скачал никто за последнюю неделю, - файл удаляется),
то "нестандартному" человеку будет неудобен этот сервис

а если пользователь даст сотне своих друзей прямую ссылку? это ж ведь тоже не учтётся,
или если человек использует Download Manager - скорей всего это тоже пройдёт мимо счётчика

так что если страница серьёзная - нужно делать через сервер,
а если просто побалываться и чтоб побыстрей, то да, можно и на JS

ну и "между прочим", мне не известен способ узнать, скачал пользователь файл или таки нет, потому оба вышеупомянутые способа будут считать колличество попыток скачать файл, а не счётчик скачанных файлов
Ответить