@Aqulus

Как сделать продажу файлов на PHP?

Делаю магазин дополнений(ZIP архивы) и возник вопрос. А как сделать так, чтобы файл нельзя было вытянуть по прямой ссылке и выдавать по какому-то хешу? И еще проблема в том, что оригинальные файлы архивов должны присутствовать, так как через них происходит вшивание лицензионного кода, а уже после - отдавать на скачивание тому, кто купил и чтобы у пользователя, не работала ссылка на скачивание, если она не его
  • Вопрос задан
  • 114 просмотров
Решения вопроса 2
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Все файлы складываете в недоступное из web место.
Даже на шаред хостингах у вас есть домашняя директория, в которой расположен каталог public_html, в котором уже лежит ваш сайт. Вот на одном уровне с public_html, в домашнем каталоге создайте папку files и складывайте туда.

Далее генерируете пользователю ссылку вида
https://mysite.ru/download/sadlflksdjfkj
Hash кладете в табличку в бд и устанавливаете время жизни, связываете ее с зарегистрированным пользователем и нужным файлом.
Регистрируете в приложении маршрут
'/download/{hash}'
в обработчите маршрута получаете это хэш, ищете в базе запись с ним. Проверяете, не истекло ли время жизни, тот ли пользователь ее открыл, и если все норм, с помощью readfile отдаете нужный файл на скачивание.
Ответ написан
@mletov
Можно хранить файлы в базе или физически на диске выше уровня корня, чтобы нельзя было подобрать прямой url.

Отдавать файл через экшен контроллера.
В экшене контроллера проверять права на доступ и в зависимости от результатов выдавать либо файл, либо фигу.

Отдавать либо авторизованным пользователям с правами, либо по хэшу, но с ограниченным сроком действия ссылки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
файлы кладете в любое хранилище, доступное от сервера, но недоступное из веб (например на том же сервере выше документ рут). Далее код - проверки, танцы, прочее учетное непотребство, и в конце readfile() и соответствующие заголовки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы