Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скачивание после просмотра рекламы

396
25 августа 2010 года
SibBear
223 / / 27.07.2006
Всем Доброго дня!

Раньше видел много примеров в yandex, но толи забыл как запрос писать, толи одно из двух.
Нужен пример, как сделать скачивание файла с сайта после 60секундной задержки, да еще бы и рекламку на это время повесить (но это детали)

Хелп!

хотябы принцип опишите кто может?
253
25 августа 2010 года
Proger_XP
1.5K / / 07.08.2004
Берёте в руки БД, PHP и JavaScript. В PHP при запросе файле генерите уникальный ID, вставляете его в БД вместе с датой, когда скачивание станет доступно (= time() + 60). Записываете его на страницу в <a>, типа [COLOR="Blue"]<a href="dl.php?id=[COLOR="Navy"]<?=$downloadID?>[/COLOR]">Скачать файл</a>[/COLOR]. Ну, а затем тривиально - включаете таймер JS и после его срабатывания показываете эту ссылку.

Можно кстати обойтись и без БД, просто генеря ID на сервере по специальному алгоритму. Например, что-то вроде [COLOR="Blue"]md5( "$fileID $allowDlAfterHour $currentDate" )[/COLOR]. Т.к. только сервер знает, как генерится ID, то подделать его нельзя.
Пример для файла #153, скачивание после 15:00, и сегодня 25.08.2010: [COLOR="Navy"]md5('153 15 25.08.2010")[/COLOR]. Здесь есть тонкие моменты, типа такой ID будет меняться в полночь, поэтому будут проблемы со скачкой между 23:00 и 00:00, нет точного контроля за периодом, когда такой ID валидный (до полночи текущего дня) и т.д. Но можно проявить изобретательность и придумать более гибкий алгоритм.
7
25 августа 2010 года
@pixo $oft
3.4K / / 20.09.2006
Цитата: Proger_XP
Ну, а затем тривиально - включаете таймер JS и после его срабатывания показываете эту ссылку

Только это дело легко вскрывается–ссылка достаётся из исходного кода.Так что тут надо ещё подумать,если ТС хочет иной метод

369
25 августа 2010 года
Kesano
451 / / 09.10.2007
Цитата: @pixo $oft
Только это дело легко вскрывается–ссылка достаётся из исходного кода.Так что тут надо ещё подумать,если ТС хочет иной метод



Будь еще круче... Загружай ссылку в DIV с помощью AJAX.
Сделай в бэкэнде скрипт, который принимает как аргумент ID ссылки.

Т.е.
ТРуляля: Генерим ссылку, пишем её, например, в базу... Туда же не забываем вписать время действия ссылки (например, 24часа она действительна) и время НАЧАЛА действия ссылки.

Всё, есть ссылка site.com/234252342542342342 , действует она с 1270000000 (это метка полученная с помощью time()+60;) и до 1270084600.

БэкЭндовый файлик для страницы с аяксом делает следующее:
Получает в качестве аргумента ID ссылки в базе, сверяет текущее время с временем разрешённого начала скачивания, и если всё норм, отдаёт ссылку на файл, которая фронтэндовым скриптом на JS, с помощью innerHTML и такой-то матери рисует эту ссылку пользователю в нужном месте...

Где у вас проблема?

253
25 августа 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: @pixo $oft
Только это дело легко вскрывается–ссылка достаётся из исходного кода.Так что тут надо ещё подумать,если ТС хочет иной метод


Нет, естесственно, только какой смысл, она всё равно активируется только в определённое время, см. мой пост целиком.

Цитата:
...вставляете его в БД вместе с датой, когда скачивание станет доступно (= time() + 60).

369
26 августа 2010 года
Kesano
451 / / 09.10.2007
Твой способ каг-бэ намекает, что я усложнил...
Я предложил ССЫЛКУ отдавать позже... А ты предлагаешь передать начало скачивания позже...
Но при этом ссылка в коде... Ахз какие еще данные нужно передать через 60секунд...

Если нужно что-то именно заныкать до поры до времени - мой способ лучше.
253
26 августа 2010 года
Proger_XP
1.5K / / 07.08.2004
И у тебя, и у меня в БД вставляется запись, поэтому в этом смысле (в использовании 1 запроса к БД) оба способа равноценны. Но твой способ будет посылать лесом юзеров без JS/AJAX, а если захочется и их подключить, то придется писать ещё код специально для них. Можно, конечно, iframe использовать, но как-то тянет на шаманство.

Хотя по большому счёту любой из двух методов годится, так что это дело вкуса.
369
26 августа 2010 года
Kesano
451 / / 09.10.2007
Кому нафиг нужны пользователи без js\ajax ??? Сейчас весь веб2.0 на них построен.. Упс, отвлекся.

З.Ы, без JS даже счётчик работать не будет... По-этому прийдется отдавать заголовки с рефрешем через 60 секунд... Или писать юзеру, если он нажимает Ф5, сколько осталось до получения ссылки )...

Так можно дойти до писанины под пользователей Lynx-а...

З.Ы. "спс" в репу ушло".
253
26 августа 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: Kesano
Кому нафиг нужны пользователи без js\ajax ??? Сейчас весь веб2.0 на них построен.. Упс, отвлекся.


Мы уже не раз на тему 2.0/JS холиварили на форуме, так что снова начинать не будем.

Цитата:

З.Ы, без JS даже счётчик работать не будет...


Конечно, зато по всем правилам можно сделать даунгрейд для пользователей без JS и иметь что-то вроде:

 
Код:
<noscript>Ссылка начнёт работать через 60 секунд.</noscript>
<a href="..." id="link">Скачать</a>
<script>
hide(link);
setTimeout(function () { show(link); }, 60000);
</script>


Реализовать едва ли не проще, чем вариант с AJAX, зато работать будет даже на каком-нибудь КПК.

Цитата:
З.Ы. "спс" в репу ушло".


Ага :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог