Я хочу, чтобы люди имели доступ к изображениям в течение ограниченного периода времени.Например, они платят за x.jpg и имеют доступ к нему, пока я не решу, что у него больше нет доступа для его загрузки.
примечание: сервер 'images', хранящий x.jpg, не зависит от 'www'сервер, так что система может легко масштабироваться.(Два сервера не обмениваются данными, доступ к БД или около того ...)
Лучшее решение, которое я нашел на данный момент, это:
На сервере www я создаю зашифрованныйСтрока, содержащая два параметра: «имя файла» и «expiration_stmp».Я передаю эту зашифрованную строку в сценарий на сервере изображений, который ее расшифровывает, проверяю, не истек ли срок действия stmp, и если все в порядке, считываю файл на диске, выводю правильные заголовки и выводю двоичные данные изображения наclient.
Итак, у меня есть такая ссылка на сервере www: "img src = http://IMAGES.myserver.com/get.php?XJDKUJHKDJSHJKDHJKHJKDJKDJKD", где" XJDKUJHKDJSHJKDHJKHJKDJKDJKD "при расшифровке извлечет в имя файла = x.jpg, expiration_stmp = 132920302030 и получит php.на сервере изображений будет что-то вроде заголовка ('Content-type ... bblablabl'); readfile (x.jpg) .....
Проблема, которую я должен решить, состоит в том, что в данный моментЯ генерирую зашифрованную строку XJDKUJHKDJSHJKDHJKHJKDJKDJKD, я не могу знать expiration_stmp, потому что право доступа может быть удалено администратором в любое время, в будущем, от 1 минуты до 5 дней. Поэтому, когда администратор в панели администратора удаляет право на чтение файладля этого конкретного пользователя пользователю должно быть отказано в доступе к файлу.
Чтобы справиться с этим, я подумалрегенерации страницы, содержащей ссылки каждый час, путем принудительного обновления страницы для генерации новой зашифрованной строки, содержащей новые expiration_stmps, действительные максимум 1 час.Так что ссылки "img src = http://images.myserver.com/get.php?XJDKUJHKDJSHJKDHJKHJKDJKDJKD" будут действительны только в течение 1 часа. Поэтому, когда администратор отменяет право доступа пользователя, я просто отказываюсь восстановить новую зашифрованную строку, чтобы пользователь больше не мог получить доступ к файлу послесрок действия последнего сгенерированного expiration_stmp истек (максимум 1 час).
На данный момент это лучшее решение, которое я нашел .... Мне бы хотелось услышать какие-либо мысли или лучший способ справиться с такой ситуацией?
спасибо