如果密码正确,请下载文件而不重定向

时间:2015-06-18 12:12:28

标签: php jquery ajax

在我网站的管理面板上,我列出了数据库的所有自动生成的备份文件,用户可以从中单击下载任何这些文件。但是,为了增加安全性,我希望实现一个文本字段,用户必须在其中输入特殊的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。

所以我的问题是,如何在保持安全性的同时不必重定向/刷新页面?

感谢。

1 个答案:

答案 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以来已经过了几年,因此它可能有错误。