2013-09-28 2 views
2

Я развертываю веб-сайт, где пользователь может приобрести PDF-файлы. теперь я ищу способ хранения pdfs, так что он может быть загружен только после оплаты. Я столкнулся с одним из способов, с помощью которого я могу хранить pdf-файлы в базе данных Mysql и генерировать путь к ней при выполнении требуемых учетных данных.безопасно хранить pdf-файлы на сервере

Есть ли другой способ сделать это, и ссылка на файл pdf должна быть динамичной и зашифрованной, чтобы другие ссылки на другие книги не могли быть предсказаны.

и язык на стороне сервера я использую PHP

+0

хранить их вне веб-корня и служить с файлом PHP –

+0

@Dagon ... Thnx для reply..can вы предоставить мне ссылку на учебник данной концепции – nikhil

+1

возможного дубликата [Creating Secure File Hosting Server для PDF-файлов] (http://stackoverflow.com/questions/10743850/creating-a-secure-file-hosting-server-for-pdfs) –

ответ

2
  1. Вам необходимо сохранить файлы где-то вне вашего корня веб-сайта, как упомянуто Dagon. Когда файл загружен, используйте move_uploaded_file, чтобы переместить его. Вы можете назвать файл любым желаемым (в пределах ОС) и сохранить реальное имя в базе данных.
  2. Затем, когда пользователь заплатил за книги, добавьте книги, которые пользователь заплатил за таблицу в дБ.
  3. Дайте пользователю список всех книг, он заплатил за как: /download/filename.pdf
  4. Добавить mod_rewrite, если вы используете Apache (или эквивалент для других веб-серверов), где перенаправляется /download/.* для download.php или контроллера.
  5. На странице загрузки проверьте, зарегистрирован ли пользователь и имеет доступ к файлу. Если нет, переадресовывайтесь на страницу покупки для этой книги.
  6. Если загрузка в порядке header для http status вам нужно: Content-Length, Content-Type, Date, Status (200), возможно, Content-Encoding.
  7. Используйте readfile для вывода файла конечному пользователю.
+0

спасибо за ответ. У меня возник вопрос, как загрузить файл за пределы root каталог .... я хочу загружать файлы из интерфейса браузера, который будет написан по сценарию с использованием php, а не из клиента загрузки s like filezilla ... – nikhil

+1

@nikhil ответил на ваш вопрос – OIS

2

Я:

  • Запретить любой доступ к файлам - т.е. использовать файл .htaccess (таким образом, никто не имеет доступ к файлу)

  • Разработка PHP скрипт, который будет:

    • получать идентификатор файла (например, имя файла; или какой-либо идентификатор, который может соответствовать файлу)
    • аутентифицировать пользователей (с некоторыми полями ввода/пароля), в отношении данных, хранящихся в базе данных, если пользователь действителен и имеет доступ к файлу (это, если разные пользователи не имеют доступа к одному и тому же набору файлов), читайте содержимое файла с вашего PHP-скрипта и отправляйте его пользователю.

Преимущество заключается в том, что ваш PHP скрипт имеет доступ к БД - это означает, что может позволить пользователям входить в, срубы, оно может использовать сессии, ...

Вот еще один ответ от пользователя стека, который подходит для этой проблемы: Creating a Secure File Hosting Server for PDFs

2

есть ли другой способ сделать это и ссылку на файл в формате PDF должен быть динамичными и зашифрованы так, чтобы другие ссылки на другие книги не могут быть предсказаны.

  1. Лучший способ, после оплаты сгенерировать ключ к файлу.
  2. создать такую ​​страницу www.site.com/download.php?key=key (и здесь вам не нужно иметь идентификатор книги, потому что ключом, который вы можете проверить в базе данных, что такое забронировать клиент купил.
  3. внутри download.php прочитать ключ, запрос к базе данных, чтобы узнать, какой файл связан с ключом
  4. читать файл и отправить его клиенту. Это, если ключ , вы отправите заголовки php в качестве типа содержимого в формате pdf, а (код php) прочитаете файл в двоичном формате и отправите его в тело сообщения.

Я надеюсь this code помогает

<?php 
// We'll be outputting a PDF 
header('Content-type: application/pdf'); 

// It will be called downloaded.pdf 
header('Content-Disposition: attachment; filename="downloaded.pdf"'); 

// The PDF source is in original.pdf 
readfile('original.pdf'); 
?> 
Смежные вопросы