2015-06-18 58 views
0

在我的網站的管理面板上,我有一個數據庫的所有自動生成的備份文件的列表,用戶可以從中點擊這些文件來下載任何這些文件。然而,爲了增加安全性,我想實現一個文本字段,用戶必須輸入一個特殊的PIN碼才能下載備份文件;像這樣:如果密碼正確,下載沒有重定向的文件

<input type="password" placeholder="PIN Code" name="pin" /> 
<button class="btn btn-primary">Download</button> 

首先,我想有一個事件,當用戶點擊該按鈕觸發,並通過Ajax調用PHP腳本,檢查密碼(和潛在的任何反洪水的措施)。如果腳本沒有產生錯誤,它將返回「OK」並開始下載。

但我最近纔開始玩Ajax,好像Ajax無法下載文件。將用戶重定向到路徑將無法工作,因爲該目錄具有chmod 770.

所以我的問題是,如何在維護安全性的同時執行此操作,而無需重定向/刷新頁面?

謝謝。

+0

你可以使用jQuery文件下載進行類似AJAX的文件下載http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/ – RuubW

+0

@RuubW,是我見過那個。我不確定這種方法是否適用於受保護的文件。我的問題也不同,因爲一個php腳本需要先運行才能啓動。 – Chris

+0

使用標題方法 –

回答

0

我想我不明白你爲什麼不能使用重定向,但嘗試從你的PHP腳本

例如服務的文件,如果下載鏈接是/downloads.php,具有形式提交回自己(action =「/ downloads.php」method =「POST」),如果引腳正確,用戶下載文件並返回到上一頁。如果不正確,它就像刷新頁面一樣。

<?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,因此可能有錯誤。