Всем привет.
Сегодня я хочу поделиться с вам классным скриптом, генерирующим уникальные ссылки на скачивание файла.
Чтобы сделать для ваших пользователей уникальные ссылки вам понадобится только немного магии и php.
Поехали!
//имя файла $file = 'file_name.zip'; //текущее время + 24 часа т.е. сколько будет активной ссылка $time = strtotime('+24 hours'); //уникальный идентификатор $key = sha1($time.$file); //Теперь эти данный мы передаем скрипту обработчику, например, так echo '<a href="http://example.com/'.$key.'/'.$time.'/'.$file.'">скачать</a>';
В .htaccess настраиваем правила для обработки подобных ссылок специальным скриптом, а в нем пишем примерно такой код для обработки.
$now = time(); $file_name = "file_name.zip"; //проверяем, если переданный таймштамп больше текущего времени //а переданные имя файла и ключ правильные //считываем файл и отдаем его пользователю if($now < $time && $file_name == $file && $key == sha1($time.$file)){ header ("Content-Type: application/octet-stream"); header ("Accept-Ranges: bytes"); header ("Content-Length: ".filesize($file)); header ("Content-Disposition: attachment; filename=".$file_name); readfile($file_name); }
Большой плюс этого метода, в том, что вы получаете уникальные ссылки без прямого доступа к файлу, ограниченные по времени действия, достаточно защищенные и при этом не требующий ничего кроме php.
Вам не нужны будут крон-скрипты, база данных, чистка временных файлов итп.
Кроме того вы можете изменить скрипт как угодно, например, добавив защиту через куки, или проверяя страницу с которой перешел пользователь и его IP.
Можно использовать сервисы сокращения ссылок и настроить mod_rewrite так, что пользователь вообще не увидит какие параметры передаются в ссылке.
Отличное решение! Взял код для тестирования, наверняка где то понадобится.