然后在另一台服务器上验证用户访问下载文件

时间:2017-08-07 10:41:47

标签: php .htaccess

我有一个站点有2台服务器。第一台服务器有php和mysql,但第二台服务器只有php(是下载主机)。 我的网站是关于销售视频,因为第一台服务器受到限制(每月流量和空间),我需要在第二台服务器上传视频。所有视频必须具有动态链接,所有链接必须是一次性的。

示例:

  1. User1购买了视频abc,此用户已在下面链接下载:http://example.com/1enewk3hd(指的是 http://example.com/files/video_abc.mp4

  2. User2购买了视频abc,此用户有以下链接下载:http://example.com/sddfse445(指 http://example.com/files/video_abc.mp4

  3. 用户必须无法通过真实链接http://example.com/files/video_abc.mp4
  4. 下载视频

    我的问题

    1. PHP和htaccess能够在2台服务器(没有mysql)上使用这个场景吗?

    2. 如果是,请指导我认识用户的最佳方式 然后第二个服务器访问下载文件(没有mysql)

    3. 在某些网站上,当用户登录服务器1时,可以从中下载 服务器2.如果从服务器1注销,则无法访问服务器2。 这是怎么回事?我们无法在服务器2上使用服务器1的会话!

1 个答案:

答案 0 :(得分:1)

让第一台服务器进行身份验证。 在第一个服务器链接上创建,这些链接有效x分钟。使用哈希保护该链接以进行操作。

hash = sha256(两台服务器上的validuntil +共享密钥)

样品: https://server2/video_abc.mp4?validuntil=2017-08-07_160000&hash=ABC123EF5244

(在我的样本中,我也会使用mod_rewrite作为一个漂亮的网址)

现在使用生成的链接将客户端重定向到新服务器。 php脚本验证查询参数" validuntil"和"哈希"通过使用共享秘密。然后检查validuntil是否过期。

如果没有流式传输文件。不要将流式文件放入webroot。 如果您能够使用readfile,则可以使用x-sendfile header或您的网络服务器通过php脚本发送。