2013-08-24 7 views
0

У меня есть почтовые файлы на моем сайте, и я создал систему регистрации, поэтому только пользователи с действительными паролями могут загружать zip-файлы ONCE.защита zip-файлов на сервере

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

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

Как я могу запретить людям загружать zip-файлы, просто разместив ссылку на файл в адресной строке браузера? возможно?

+0

Не храните его в доступном месте и не используйте его через PHP. –

+0

Спасибо за комментарий. где бы я их не сохранил, он будет показан в исходном коде – user2712645

+0

Не думаю, что вы полностью понимаете, что я имею в виду, я напишу его более полно и опубликую его как ответ, один момент. –

ответ

0

Вместо того, чтобы размещать файл в папке, доступной в Интернете (например, /var/www/), разместите ее над ней, чтобы пользователи не могли ее просмотреть (например, /var/files). Затем, чтобы подавать его своим пользователям, после того, как они набрали пароль, с помощью php-скрипта, сценарий задает заголовки, как если бы это был файл, и использовать readfile для вывода содержимого файла пользователю.

0

Во-первых, создайте папку в корневом каталоге (~ /) под названием secure_zip или что-то в этом роде. Это должно находиться рядом с вашей папкой public_html (это означает, что они не могут быть доступны, набрав URL-адрес).

Далее создайте новый скрипт, названный file.php или что-то: -

<?php 
public function sendFile() { 
    $filename   = "sample.zip"; 
    $attachment_location = $_SERVER["DOCUMENT_ROOT"] 
     . "../secure_zip/" . $filename; 

    if (file_exists($attachment_location)) { 
     header('Cache-Control: public'); // needed for i.e. 
     header('Content-Type: application/pdf'); 
     header('Content-Disposition: attachment; filename="' . $filename . '"'); 
     readfile($attachment_location); 
     die(); 
    } else { 
     die('Error: File not found.'); 
    } 
} 

И позвони SendFile(), если вы аутентификации пользователя с помощью любой логики вы хотите, например:

if (true) { sendFile(); } 
+0

Почему «приложение/pdf»? Это опечатка? –

+0

Спасибо за ваш ответ, я дам ему попробовать: D – user2712645

Смежные вопросы