Разрешить загрузку файлов для незарегистрированных пользователей - PullRequest
0 голосов
/ 26 июля 2010

Я создаю сервис, который позволяет посетителям моего сайта создавать контент (текст) и сохранять его, чтобы они могли получить к нему доступ позже.Однако пользователям не нужна учетная запись пользователя, прежде чем они смогут использовать эту функцию.Они просто нажимают «Попробуй сейчас» и используй его.Если они хотят сохранить свою работу, им нужно зарегистрироваться.

Я планирую добавить функцию загрузки изображений / файлов.Тем не менее, я в недоумении по поводу того, как реализовать это для режима «Попробуй сейчас» (не вошедший в систему пользователь).Кроме того, я бы создал временное имя пользователя и сохранил его в сеансе, а также создал бы соответствующую временную папку, куда будут загружаться данные пользователя.Но как мне это убрать?Пользователь может просто закрыть браузер, и у меня не будет возможности узнать, что временные папки все еще используются.

Есть ли лучший способ сделать это?Или я должен просто запретить загрузку файлов для незарегистрированных пользователей?

Кстати, я использую PHP на CodeIgniter.

Ваш вклад был бы неоценимым :) Спасибо!

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Вот один из возможных способов сделать:

  • При каждом запросе страницы сохраняйте идентификатор сеанса - пара дата-время в базе данных,
  • Для каждого сохраненного изображения сохраняйте файли связанный идентификатор сеанса в базе данных.

Затем вы можете регулярно проверять устаревшие файлы .Например, если ваш лимит сеанса составляет 30 минут, вы можете пройтись по базе данных и выбрать каждый сеанс с истекшим сроком действия, т.е.записи, где дата + 30 минут меньше, чем сейчас.Затем удалите все файлы, сохраненные в этих сеансах с истекшим сроком действия.

1 голос
/ 26 июля 2010

Возможно, у вас уже есть какой-то ключ сеанса для вашего пользователя, используйте его в качестве имени временного каталога. Удалите каталог, когда время сеанса пользователя истекло, то есть он не был активным в течение длительного времени. Для анонимных пользователей «долгое время» может составлять всего несколько дней. Это можно сделать с помощью отдельного процесса очистки, если трудно перехватить время ожидания сеанса.

Возможно, вы также захотите ограничить объем дискового пространства, который могут использовать анонимные пользователи, на всякий случай.

0 голосов
/ 26 июля 2010

Таким образом, если вы поместите их в папку, присвойте им какое-нибудь временное имя, например _tempimage_<username>, при каждом вызове этого сценария загрузки сканируйте эти временные файлы и, если они найдены, но не используются, удалите их , Чтобы проверить, используются ли они, используйте базу данных для хранения этих записей «попробуй сейчас» в течение некоторого времени.

Простой и легкий способ, я думаю.

...