Вопрос говорит все это. Как я могу позволить пользователям загружать файл с моего сайта и не позволять им видеть, на что ссылается этот файл? Я понимаю, что может потребоваться что-то вроде download.php, который будет служить в качестве шлюза, но в прошлом, я не знаю, что сценарий следующий … Если вам мешает написать весь код, несколько имен функций, которые Мне нужно было использовать, было бы очень удобно!
Найдите способ идентификации загружаемого файла (например, переменную GET, которая соответствует идентификатору строки в базе данных или что-то в этом направлении). Убедитесь, что он действительный, потому что вы не хотите, чтобы ваши пользователи могли загружать что-либо с вашего сайта. Затем используйте header
с Content-Disposition
чтобы сообщить браузеру, что файл должен быть загружен, и readfile
для его вывода.
Например:
<?php $id = intval($_GET['id']); $query = mysql_query('SELECT file_path FROM files WHERE id = ' . $id); if (($row = mysql_fetch_row($query)) !== false) { header('Content-Disposition: attachment; filename=' . basename($row[0])); readfile($row[0]); } exit; ?>
Вы не можете заставить кого-то загружать файл из URL-адреса, не сообщая им URL-адреса. Это невозможно по спецификации HTTP. Все загруженные имеют URL-адрес.
Однако у вас может быть URL-адрес загрузки, который работает только один раз, или требуется передача определенной информации через метод POST. Вы проверяете токен в переменных GET или POST и недействительны этот токен после его использования один раз.
Вы можете использовать функцию header()
которая задокументирована здесь
Я бы предложил прокрутить вниз и посмотреть на 1-й пример. Кажется, вы делаете именно то, что хотите.
readfile должен делать то, что вы хотите. Поместите фактический файл за пределы корня веб-сервера и потребуйте некоторые учетные данные перед передачей файла.