关于下载脚本的一些奇怪之处

时间:2014-06-26 03:18:59

标签: php mysql excel

美好的一天,

使用下载脚本[再次]遇到问题。现在,问题在于每当我尝试下载文件时,都是已经获取的download.php而不是MS Excel文件本身。虽然在下载过程中,它显示的图标甚至是我试图下载的文件都是excel格式的应用程序。但是我无法理解的是,只要我下载它,它就会变成空的download.php

downloading process

以下是我调用下载的代码:

<?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;
 }


?>

我该怎么办?我想知道出了什么问题......

1 个答案:

答案 0 :(得分:0)

使用header('Content-Disposition: attachment; filename=' . $name);

此外,尝试使用单引号并连接字符串,而不是双引号。双引号就像eval(),如果你真的不需要它,不推荐使用它。

此外,使用PDO进行数据库访问或至少使用mysqli,并在将输入包含在SQL查询之前清理输入。或'download.php?id=1'; DROP TABLE user;--会得到你。 http://xkcd.com/327/