在我网站的管理面板上,我列出了数据库的所有自动生成的备份文件,用户可以从中单击下载任何这些文件。但是,为了增加安全性,我希望实现一个文本字段,用户必须在其中输入特殊的PIN码才能下载备份文件;像这样:
<input type="password" placeholder="PIN Code" name="pin" />
<button class="btn btn-primary">Download</button>
首先,我想在用户点击按钮时触发一个事件,并通过Ajax调用一个检查密码的php脚本(以及可能的任何防洪措施)。如果脚本没有产生任何错误,它将返回&#34; OK&#34;并可以开始下载。
但我最近才开始使用Ajax,似乎Ajax无法下载文件。将用户重定向到路径将不起作用,因为该目录具有chmod 770。
所以我的问题是,如何在保持安全性的同时不必重定向/刷新页面?
感谢。
答案 0 :(得分:0)
我想我不明白为什么你不能使用重定向,但尝试从你的php脚本提供文件
例如,如果下载链接在/downloads.php上,请将表单提交回自身(action =&#34; /downloads.php" method =&#34; POST&#34;)和如果引脚正确,则用户下载文件并返回上一页。如果不正确,它就像页面刷新一样。
<?php
if (isset($_POST['pin']) && isset($_POST['filename']) && check_pin($_POST['pin'])) {
header('Content-Type','application/sql');
header('Content-Disposition','attachment; filename="' . $filename ."');
print file_get_contents($filename);
}
else {
// the rest of your page
}
?>
*请原谅我的代码,自从我上次使用php以来已经过了几年,因此它可能有错误。