2015-02-08 1 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, File3 в SELECT заявление, но проблема заключается в header() и echo линии после того, как ... Как я могу изменить, что согласно тому, что пользователь щелкает?

+0

Прежде всего: знаете ли вы, что SQL-инъекция? Ваш код плохой! – Aitch

ответ

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; 

Не проверял его.

Смежные вопросы