如何阻止用户下载付费节目而不付费

时间:2017-06-07 00:00:35

标签: php e-commerce

我想用php建立电子商务网站,我将使用omnipay库进行支付。问题是如果网址 www.mywebsite.com/programs/paint.exe 中的文件用户可以在他的浏览器中写入url和付费程序将下载.....我搜索了如何阻止用户下载文件,如 RewriteEngine ,但如果用户在这种情况下付款,我该如何让文件下载?

2 个答案:

答案 0 :(得分:1)

也许你可以试试这些:

  1. 以散列格式存储您的程序名称,因此代替www.mywebsite.com/programs/paint.exe而不是像www.mywebsite.com/programs/ca63ff966ff272da14e4fc2e73fcd399那样更好。您至少已将付费程序存储在表中,该表应提供其散列格式的名称列。
  2. www.mywebsite.com/programs/paint.exe此网址应该且只能由经过身份验证的用户访问。如果已经过身份验证的用户,则检查此用户的购买历史记录,如果他/她曾购买此paint.exe程序,如果没有他/她的购买记录,则必须将他/她重定向到您的付款页面。

答案 1 :(得分:0)

除了像Peter提到的那样使用散列文件名,你可以使用php在认证后提供文件。

创建一个htaccess重写,将任何文件请求直接发送到php脚本。在php脚本中,执行一些身份验证(I.E.让用户登录,或让他们使用设置会话变量的安全链接等)。然后,如果用户成功通过身份验证,请使用php使用http标头返回文件。

header('Content-Type: application/x-msdownload'); // Set this to a .exe
header('Content-Disposition: attachment; filename="paint.exe"'); // Set the filename to download.
$downloadFile = file_get_contents('programs/hashedpaintexename.exe');
echo $downloadFile;

注意:您需要确保在使用散列文件名时,您还希望htaccess处理这些散列文件。

另一个选择,如果您已经控制服务器这样做,那么您可以让PHP从网站目录之外加载文件,而不是使用htaccess重写。例如,如果您的网站目录是/var/www/mywebsite,请php从/whatever/path/you/want加载可执行文件,前提是php具有对该目录的读访问权。