Запароленное скачивание файлов
Вкратце, нужно сделать, чтобы человек мог скачать продукт, только если он знает ключ для него, и сделать, чтобы пользователь не мог передать прямую ссылку на продукт другому пользователю.
Подробности.
Есть интернет-сайт, php/mysql, в базе есть такие таблицы:
Продукты (ID, название, описание, и тп)
у продукта есть несколько редакций (типа, стандартная, профессиональная, и так далее):
Редакции (ID_Продукта, название, цена)
Для каждой редакции продукта есть свой файл (хранится на сервере) сл списоком лицензионных ключей вида
AA13-QWE4-QWE5-TTT7
GGH4-3JJF-SETJ-FJER
(и так далее)
Эти ключи вводятся при инсталляции продукта, и каждый пользователь, купивший продукт, имеет свой уникальный ключ.
Файлы эти хранятся в папках на сервере таким образом:
Product1Nameedition1.txt
Product1Nameedition2.txt
Product1Nameedition3.txt
Имя папки совпадает с именем продукта из таблицы Products, а имя файла с ключами задается в таблице Редакции (поле SerialsFileName).
Что нужно сделать.
Нужно сделать страницу, на ней 2 выпадающих списка:
Продукт (названия продуктов)
Редакция (список становится активным при выборе продукта, и содержит названия редакций выбранного продукта.
Желательно это сделать через java скрипт, без перезагрузки страницы, как тут при выборе города: http://money.yandex.ru/shop.xml?scid=1237)
Поле для ввода лицензионного ключа
После выбора продукта, редакции и ввода ключа пользователь нажимает кнопку Download, и если ключ
правильный (т.е. он есть в файле ключей для этой редакции), ему открывается страница со списком файлов для закачки (есть еще таблица Файлы с именами файлов для каждой редакции. Одной редакции как правило соответсвует несколько разных файлов).
Файлы нужно давать скачать так, чтобы пользователь не мог сохранить у себя URL файла и потом постоянно его скачивать его без ввода ключа по этому URL.
Т.е. нужно
1) создавать временный URL
2) записывать пользователю cookie
3) в скрипте редиректа проверять дату выдачи URL и наличие cookie. Если дата старше 3 дней, или cookie нет, то перенаправлять пользователя на страницу с ошибкой.
Это все, если что-то непонятно, то напишите мне сообщение, и я тут размещу ответ, чтобы все его могли видеть.
Укажите сумму, за которую возьметесь за работу, сроки (сильной срочности нет, я могу подождать дней 10,
если предложите хорошую цену). Сумму укажите с джаваскриптом (если умеете) и без (в любом случае).