2015-02-08 44 views
1

我有三個文件被用戶上傳到數據庫中,一旦他們競爭表單的話。問題是我有3個不同的下載腳本來檢索文件...文件正在進入數據庫爲fileName1, fileName2, fileName3 and File1, File2, File3。有沒有辦法只有1個下載腳本而不是3個不同的腳本?根據用戶點擊更改文件名稱

下面是相關代碼:

$id = $_GET['id']; 
$query = "SELECT FileName3, File3 " . 
     "FROM UserUploads WHERE ID = '$id'"; 

$result = mysqli_query($connection, $query) or die('Error, query failed'); 
list($filename3, $file3) = mysqli_fetch_array($result); 

header("Content-Disposition: attachment; filename=$filename3"); 
echo $file3; 

我可以添加所有fileName1, fileName2, fileName3 and File1, File2, File3SELECT語句,但問題是header()echo行之後......我怎樣才能改變這種根據用戶點擊了什麼?

+0

首先:你知道SQL注入嗎?你的代碼不好! – Aitch 2015-02-08 22:11:10

回答

1

如果您爲一個用戶提供3個下載鏈接。每個鏈接都有一個參數,例如「文件」:

http://your-domain.com/download.php?file=1&id=1234 
http://your-domain.com/download.php?file=2&id=1234 
http://your-domain.com/download.php?file=3&id=1234 

將開關大小寫塊添加到文件中。

$id = (int)$_GET['id']; 
$file = (int)$_GET['file']; 

if($file <= 0 || $file >= 4) { 
    die('bad boy'); 
} 

$query = "SELECT FileName$file as filename, File$file as file " . 
     "FROM UserUploads WHERE ID = '$id'"; 

$result = mysqli_query($connection, $query) or die('Error, query failed'); 
list($fn, $data) = mysqli_fetch_array($result); 

header("Content-Disposition: attachment; filename=$fn"); 
echo $data; 

沒有測試過。