美好的一天,
使用下载脚本[再次]遇到问题。现在,问题在于每当我尝试下载文件时,都是已经获取的download.php而不是MS Excel文件本身。虽然在下载过程中,它显示的图标甚至是我试图下载的文件都是excel格式的应用程序。但是我无法理解的是,只要我下载它,它就会变成空的download.php
以下是我调用下载的代码:
<?php
$up = mysql_query("SELECT * FROM upload");
$CountRow=0;
while($cr = mysql_fetch_array($up))
{
echo "<div style='float:left; '>";
echo "<p style='padding:5px; margin:5px; border:1px solid #ccc; '>";
echo "<a href='rental/download.php?id=".$cr['upload_id']."'><img src='images/icon.png'> </a>"." "."<a href='download.php?id=".$cr['upload_id']."'>".$cr['file_name']." "."</a>";
echo "</p>";
echo "</div>";
}
$CountRow++;
?>
这是download.php
<?php
if(isset($_GET['id']))
{
$id = $_GET['id'];
$query = "SELECT file_name, file_type, file_size, content
FROM upload WHERE upload_id = '$id'";
$result = mysql_query($query) or die('Error, query failed');
list($name, $type, $size, $content) = mysql_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
ob_clean();
flush();
echo $content;
mysql_close();
exit;
}
?>
我该怎么办?我想知道出了什么问题......
答案 0 :(得分:0)
使用header('Content-Disposition: attachment; filename=' . $name);
此外,尝试使用单引号并连接字符串,而不是双引号。双引号就像eval(),如果你真的不需要它,不推荐使用它。
此外,使用PDO进行数据库访问或至少使用mysqli,并在将输入包含在SQL查询之前清理输入。或'download.php?id=1'; DROP TABLE user;--
会得到你。 http://xkcd.com/327/