如果我对您的理解正确,您可以做一个将动态 url 映射到资产的数据库表。
例如
asset_maps
id | urlcode | asset | expire
1 | somerandomcode | /var/whatever/path/myfile.jpg | someunixtimestamp
那么如果你有一个php脚本,你可以将随机生成的代码作为参数传入,然后获取资产。
例如
如果您有以下数据库记录:
id:2
网址代码:ABC123
资产:/var/stuff/file.zip
过期:123456789
假设你的 php 文件名为“file.php”
您可以通过以下方式访问它:file.php?file=ABC123
然后在 file.php 中,您可以使用该查询参数来查找要检索的资产,并确保它尚未过期。
然后您可以使用 file_info 找出文件的类型并发送相关标题以强制下载该资产。
--
然后您可以使用 .htaccess 将 url 格式化为不同的格式,例如
http://f.yoursite.com/ABC123
或任何你想要的。
--
就实际生成随机码而言,您可以执行以下操作:
function generate_random_string($length=10, $alphaNumericOnly=false)
{
$chars = " _?!@#~ 23456789 _?!@#~ AzBbCcDdEeFfGgHhJjKkMmNn _?!@#~ PpQqRrSsTtUuVvWwXxYyZz _?!@#~ 23456789 _?!@#~ ";
if ($alphaNumericOnly){
$chars = preg_replace("/[^a-z0-9]/i", "", $chars);
}
$l = strlen($chars) - 1;
$output = "";
for($i = 0; $i < $length; $i++)
{
$r = mt_rand(0, $l);
$output .= $chars[$r];
}
return $output;
}