Со стороны браузера действие "обновить страницу" почти ничем не отличается от "закрыть, а потом открыть эту-же страницу" или даже от "открыть этот же адрес в новой вкладке".
Вам надо для начала решить как ваше приложение должно себя вести в таких случаях, и потом уже реализовать это в коде.
- показывать ту-же ссылку? Запишите ее в сессию, например, и показывайте каждый раз.
- менять ссылку каждый раз? Генерируйте новую при каждом запросе.
- менять ссылку только если предыдущая была использована? Пишите проверку была ли использована.
И т.д.
Идеи типа "запрет на обновление страницы" не работают, вы можете сделать открытие страницы неудобным, но не можете запретить.
"после скачивания все закрывалось" - можно, но не во всех случаях, и кто помешает пользователю посмотреть историю запросов и открыть страницу снова?
"после окончания скрипта делался переход на другу страницу" - можно, но опять-же, это только мелкое неудобство, пользователь может вернуться через историю браузера.