Практически всего лишь комбинация ответов Ильмари Каронена и Мартинстоэкли, но с более подробной информацией.
Использование таблицы базы данных такого типа:
temp_passes
uuid | createTime | expireTime | filename
------------------------------------------
123-4 | 1326735047 | 1327735047 | myDisk.iso
Каким-то образом вы генерируете UUID для пользователя и вставляете его в базу данных. Затем, давая ссылку на скачивание, вы используете UUID следующим образом:
http://example.com/download.php?id=123-4
или, альтернативно, иметь поле пароля, в котором пользователь должен ввести свой идентификатор, и отправить его в download.php
. В любом случае:
- Проверьте идентификатор по базе данных, убедившись, что он существует и не истек.
- Удалите идентификатор из базы данных, чтобы его нельзя было использовать снова.
- Пусть PHP сгенерирует загрузку, вероятно, используя
readFile()
.
Вы можете удалить идентификатор до или после завершения загрузки, это ваше дело. Однако, если это большой файл, вы, вероятно, захотите сделать это в первую очередь, чтобы другие люди не могли использовать один и тот же «пароль» для нескольких одновременных загрузок.