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

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

8
задан Registered User 15 July 2010 в 04:08
поделиться

4 ответа

Найдите способ идентифицировать файл для загрузки (например, переменную GET, которая соответствует идентификатору строки в базе данных, или что-то в этом роде). Черт возьми, убедитесь, что он действительный, потому что вы не хотите, чтобы ваши пользователи могли скачивать что-либо с вашего сайта. Затем используйте заголовок с 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;

?>
10
ответ дан 5 December 2019 в 11:22
поделиться

Вы не можете заставить кого-то загрузить файл с URL-адреса, не сообщив ему URL-адрес. Это невозможно в соответствии со спецификацией HTTP. Все загруженное имеет URL-адрес.

Однако вы можете иметь URL-адрес загрузки, который работает только один раз или требует передачи определенной информации с помощью метода POST. Вы проверяете токен в переменных GET или POST и аннулируете этот токен после того, как он используется один раз.

4
ответ дан 5 December 2019 в 11:22
поделиться

Вы можете использовать функцию header () , которая задокументирована здесь

. Я бы посоветовал прокрутить вниз и посмотреть на 1-й пример. Кажется, он делает именно то, что вы хотите.

1
ответ дан 5 December 2019 в 11:22
поделиться

файл чтения должен делать то, что вы хотите. Поместите фактический файл за пределы корня веб-сервера и потребуйте некоторые учетные данные перед передачей файла обратно.

0
ответ дан 5 December 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: