【问题标题】:how can i block the user from downloading paid programs with out paying我如何阻止用户下载付费程序而不付费
【发布时间】:2017-06-07 00:00:35
【问题描述】:

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

【问题讨论】:

    标签: php e-commerce


    【解决方案1】:

    也许你可以试试这些:

    1. 以散列格式存储您的程序名称,因此使用www.mywebsite.com/programs/ca63ff966ff272da14e4fc2e73fcd399 代替www.mywebsite.com/programs/paint.exe 可能会更好。您至少已将您的付费程序存储在一个表中,并且该表应提供其哈希格式的名称列。
    2. www.mywebsite.com/programs/paint.exe 这个网址应该而且只能由经过身份验证的用户访问。如果已经是认证用户,你可以查看这个用户的购买历史,如果他/她曾经购买过这个paint.exe程序,如果没有他/她的购买记录,你必须将他/她重定向到你的支付页面。李>

    【讨论】:

      【解决方案2】:

      除了像 Peter 提到的那样使用散列文件名之外,您还可以在身份验证后使用 php 来提供文件。

      创建一个 htaccess 重写以将对该文件的任何请求直接发送到 php 脚本。在 php 脚本中,执行一些身份验证(即让用户登录,或者让他们使用设置会话变量的安全链接等)。然后,如果用户认证成功,则使用 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 具有对该目录的读取权限。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多