php - 为另一台服务器上的文件生成限时下载链接

时间:2013-01-16 15:01:20

标签: php download

我将文件放在我的VPS上,用户可以直接下载所有文件。但我想隐藏我的实际文件路径并限制下载时间。我用谷歌搜索并找到了一些解决方案,但大多数都是在同一台服务器上的文件,其中一些在VPS端有一些编码,但我不能在我的VPS上写任何PHP代码,因为它不支持php。 我也尝试了一些运行良好的脚本,但生成的链接不可恢复,直到下载完成后才显示文件大小。我该如何解决这些问题?

2 个答案:

答案 0 :(得分:0)

如果您将apache作为Web前端运行,则可以使用mod_auth_token(http://code.google.com/p/mod-auth-token/)apache模块。 这就是你如何处理令牌生成过程的PHP方面:

<?php
// Settings to generate the URI
$secret = "secret string";             // Same as AuthTokenSecret
$protectedPath = "/downloads/";        // Same as AuthTokenPrefix
$ipLimitation = false;                 // Same as AuthTokenLimitByIp
$hexTime = dechex(time());             // Time in Hexadecimal
//$hexTime = dechex(time()+120);         // Link available after 2 minutes      
$fileName = "/file_to_protect.txt";    // The file to access


// Let's generate the token depending if we set AuthTokenLimitByIp
if ($ipLimitation) {
  $token = md5($secret . $fileName . $hexTime . $_SERVER['REMOTE_ADDR']);
}
else {
  $token = md5($secret . $fileName. $hexTime);
}

// We build the url
$url = $protectedPath . $token. "/" . $hexTime . $fileName;
echo $url;
?>

答案 1 :(得分:0)

如果您无法更改实际的下载链接,它们将一直可供下载,直到从服务器中删除它们为止。 当然,您可以根据系统时间创建一个加密下载URL的脚本,但是一旦用户在一段时间内调用它,他就会从脚本中获取解密的URL。