我正在寻找某种下载身份验证。我将给用户一个文件的链接,我想确保只有那个人只能获得一次。有没有设置数据库的简单解决方案?
更好的是:如果可以使用加密的网络链接,只允许您从我的FTP服务器下载一次文件,之后链接就会失效。
答案 0 :(得分:2)
您可以使用简单的PHP脚本。这个脚本在浏览器的GET文件中重新输入inputet。 执行完毕后,您可以将此文件重命名为随机字符串。 这只是第一个人下载这个文件。 你的链接有点像这样。是www.domain.tld / DIR / script.php的?文件=。在/ usr / 123.tar.gz。 您也可以在base64中加密文件名,在此选项中您的链接是www.domain.tld / dir / script.php?file = Li91c3IvMTIzLnRhci5neg ==
没有base64的脚本:
<?php
$file = $_GET['file'];
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
rename($file, "secret_new_filename");
exit;
}
else
{
echo 'File don\'t exist';
}
?>
使用base64:
<?php
$file = base64_decode($_GET['file']);
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
rename($file, "secret_new_filename");
exit;
}
else
{
echo 'File don\'t exist';
}
?>