php - 将 pdf 文件安全地存储在服务器上

标签 php mysql pdf encryption payment

我正在部署一个网站,用户可以从中购买 pdf。现在我正在寻找存储pdfs的方法,以便只有在付款完成后才能下载。 我遇到了一种方法,可以将 pdf 存储到 Mysql 数据库中,并在满足要求的凭据时生成它的路径。

是否有任何其他方法可以做到这一点,并且到 pdf 文件的链接应该是动态的和加密的,以便无法预测到其他书籍的其他链接。

我使用的服务器端语言是 PHP

最佳答案

  1. 如 Dagon 所述,您需要将文件存储在网站根目录之外的某个位置。上传文件时使用 move_uploaded_file移动它。您可以随意命名文件(在操作系统限制内),并将真实名称保存在数据库中。
  2. 然后当用户已经为图书付款后,将用户已付款的图书添加到数据库中的一个表中。
  3. 向用户提供他已付费购买的所有书籍的列表,例如:/download/filename.pdf
  4. 如果您使用 Apache(或其他网络服务器的等效文件),请添加 mod_rewrite,其中/download/.* 被重定向到 download.php 或 Controller 。
  5. 在下载页面上,检查用户是否已登录并有权访问该文件。如果没有,请重定向到该书的购买页面。
  6. 如果下载正常设置header对于 http status您需要:内容长度、内容类型、日期、状态 (200),也许还有内容编码。
  7. 使用readfile将文件输出给最终用户。

关于php - 将 pdf 文件安全地存储在服务器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19065969/

相关文章:

pdf - pdf图像的ghostscript下采样,下采样因子错误

php mysql 根据另一个表中的冒号值从表中选择一组列

php - 为什么我的 $_Post 似乎只存储最后输入的值?

PHP/MySQL 脚本不会让用户在很多时间内多次访问

php - 如何从 PHP 中的时间范围(昨天,过去 30 天)中获取 SQL 行数

ruby-on-rails-3 - 为什么当 Rails 应用程序被终止时,PDFKit/wkhtmltopdf 会挂起,但会按预期呈现 PDF?

php - 使用 wp_read_audio_metadata()

PHP 脚本因本地 IP 更改而挂起

MySQL正则表达式用于排除字符串

html - 执行文件 -> 打印时嵌入 PDF 内容