Сценарий PHP, позволяющий пользователям загружать файл с моего сайта, не раскрывая ссылку на файл на моем веб-сайте?

Вопрос говорит все это. Как я могу позволить пользователям загружать файл с моего сайта и не позволять им видеть, на что ссылается этот файл? Я понимаю, что может потребоваться что-то вроде download.php, который будет служить в качестве шлюза, но в прошлом, я не знаю, что сценарий следующий … Если вам мешает написать весь код, несколько имен функций, которые Мне нужно было использовать, было бы очень удобно!

Solutions Collecting From Web of "Сценарий 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 должен делать то, что вы хотите. Поместите фактический файл за пределы корня веб-сервера и потребуйте некоторые учетные данные перед передачей файла.