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。我怎样才能调整我的代码按钮来触发文件的下载?
你能否详细说明“没有任何反应”?完全没有HTTP请求?如果没有,这个按钮是否是一种形式?什么是处理按钮的点击事件?如果提出请求,它是如何失败的?查询字符串值是否存在?数据库查询是否以某种方式失败?还有别的吗? – David
**你的代码很容易被利用**。 1. SQL注入是一件非常糟糕的事情:*?loanid = 1或drop table loans *,2.我可以上传一个php文件并在您的服务器上运行任何我想要的文件。 3.游戏结束。如果您不知道如何避免这些SQL注入,请不要让用户声明文件名并使用准备好的语句。 –