2016-11-15 97 views
0

我试图用一个按钮从我的数据库中下载一个文件。从数据库上按下按钮的php下载文件

我用下面的代码文件上传到我的数据库:

$loanform = $_FILES['loanform']['name']; 
$uploadfile = "loanforms/$loanform"; 
move_uploaded_file($_FILES['loanform']['tmp_name'],$uploadfile); 

数据库存储的文件名和实际的文件存储在loanforms在Web服务器上目录中。

当我然后点击查看特定用户的记录时,我的数据库中的所有数据都会显示一个按钮以下载文件。然而,当按钮被点击时,没有任何反应。

要获取用户的信息,我使用下面的代码;

$loanid=$_GET['loanid']; 

$my_query="select * from loans where loanid=$loanid"; 
$result= mysqli_query($connection, $my_query); 

while ($myrow = mysqli_fetch_array($result)): 

    $username = $myrow["username"]; 
    $emailaddress = $myrow["emailaddress"]; 
    $product = $myrow["product"]; 
    $product_desc = $myrow["product_desc"]; 
    $serial = $myrow["serial"]; 
    $date_collected=$myrow["date_collected"]; 
    $date_return=$myrow["date_return"]; 
    $loanform=$myrow["loanform"]; 
    $returned=$myrow["returned"]; 

endwhile; 

if (file_exists($loanform)) { 
     header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename="'.basename($loanform).'"'); 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate'); 
     header('Pragma: public'); 
     header('Content-Length: ' . filesize($file)); 
     readfile($loanform); 
     exit; 
    } 

该按钮的HTML是:

<label class="labelform">Loan Form:</label><input class="inputtextlarge" type="button" name="loanform" autocomplete="off" size="30" value="Download Loan Form"> 

基本上为的LoanID = 1文件名存储的是loanform.pdf。我怎样才能调整我的代码按钮来触发文件的下载?

+1

你能否详细说明“没有任何反应”?完全没有HTTP请求?如果没有,这个按钮是否是一种形式?什么是处理按钮的点击事件?如果提出请求,它是如何失败的?查询字符串值是否存在?数据库查询是否以某种方式失败?还有别的吗? – David

+0

**你的代码很容易被利用**。 1. SQL注入是一件非常糟糕的事情:*?loanid = 1或drop table loans *,2.我可以上传一个php文件并在您的服务器上运行任何我想要的文件。 3.游戏结束。如果您不知道如何避免这些SQL注入,请不要让用户声明文件名并使用准备好的语句。 –

回答

0

你的按钮什么都不做,因为它只是按钮。它使链接:

<label class="labelform"> 
    Loan Form: 
</label> 
<a href="getLaon.php?loanid=<?= $loanId; ?>" class="inputtextlarge">Download Loan Form</a> 

而且上应注意的有关安全性的评论你的问题下。