php-为其他服务器上的文件生成有时间限制的下载链接

php-为其他服务器上的文件生成有时间限制的下载链接,php,download,Php,Download,我把我的文件放在我的VPS上,用户可以直接下载所有文件。但我想隐藏我的实际文件路径,并制作有时间限制的下载链接。我在谷歌上搜索了一下,找到了一些解决方案,但大多数都是针对同一台服务器上的文件,其中一些在VPS端有一些编码,但我无法在我的VPS上编写任何php代码,因为它不支持php。 此外,我尝试了一些脚本,工作正常,但生成的链接无法恢复,并且直到下载完成后才显示文件大小。如何解决这些问题?您可以使用mod\u auth\u令牌(http://code.google.com/p/mod-auth

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

您可以使用mod\u auth\u令牌(http://code.google.com/p/mod-auth-token/)apache模块,如果您作为web前端运行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;
?>

如果您无法更改实际下载链接,则在从服务器上删除之前,这些链接将一直可用。

当然,您可以创建一个脚本,根据系统时间对下载URL进行加密,但一旦用户在时间内调用它们,他就会从脚本中获得解密的URL。

如果您有VPS,您应该拥有对它的root访问权限吗?如果是这样,通过安装
php5
,使其支持PHP?如果这是通过PHP完成的,则需要使用数据库,以包含所有路径、文件名、下载计数和剩余时间。