2016-01-05 2 views
-2

На самом деле я не собираюсь задавать этот вопрос, поэтому он, вероятно, повторится. Давайте посмотрим: я бы хотел отключить загрузку файла из моей сети без сценария загрузки (просто используя URL: http://something/file.zip), если вы не зарегистрированы, а PHP предпочтительно. Да, это очень распространенная тема, но я не нашел никакой информации! Многие страницы делают это, например uploaded.net. Надеюсь, вы понимаете, о чем я говорю. Благодаря!Как отключить загрузку файла из Интернета без переменной сеанса?

+0

заключит ваш скрипт загрузки с инструкцией 'if'. а также вы можете добавить свой сценарий загрузки? – roullie

+0

Проблема в том, что у меня нет скрипта загрузки xD. Файл загружается при вводе URL-адреса (например: http: //something/file.zip) –

+0

Не разрешать прямой доступ к файлу. Закрепите его за скриптом и проверьте его состояние (условия) внутри этого скрипта. – David

ответ

0

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

Затем создайте сценарий загрузки для загрузки файла пользователям. Как правило, такой сценарий будет дан некоторый идентификатор файла, что-то вроде:

http://yourserver.com/download.php?file=file.zip 

(Важно:Будьте очень осторожны как определить, что файл Не просто слепо позволяют пользователям загружать то, что они. хотят, или они могут ввести более длинные пути на URL и скачать любой файл с сервера. Всегда проверяйте доступ к вещам первой.)

Это было бы так же, как и любой другой PHP ЮКЖД ipt, за исключением того, что вместо отображения HTML он вернет файл. Фактическая часть вывода файла может быть столь же просто, как:

readfile('/path/to/file.zip'); 

Вы бы также, вероятно, хотите установить заголовки содержимого соответствующим образом, и т.д. Более полный пример можно найти in the documentation:

<?php 
$file = 'monkey.gif'; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename="'.basename($file).'"'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    readfile($file); 
    exit; 
} 
?> 
+0

Спасибо вам большое! Вместо того, чтобы поместить файл из корневого каталога, я использовал функцию «Hotlink Protection» в CPanel. Но остальное было очень полезно для меня, спасибо :) –