试图用PHP强制下载mp3文件,但它试图下载php文件

时间:2011-08-25 06:26:11

标签: php mp3

我正试图强制下载MP3文件。 在htm文件中,我链接到download.php文件:

<a href="download.php?file=someaudiofile.mp3">LINK</a>

download.php的内容

$filename = $_GET['file']  
header("Content-Length: " . filesize($filename));
header('Content-Type: audio/mp3');
header('Content-Disposition: attachment; filename=audiofile.mp3');
readfile($filename);

但最终的结果是,在所有3个主流浏览器中,你想下载'download.php'吗?

它试图下载php文件而不是mp3 ....我不明白。

有什么想法吗?

提前致谢。


对不起伙计们,我应该补充一点,我只是暗示了。它在网站上的代码中。半冒号也在现场版本上,我的错是不在这里添加它。已经很晚了,因为它无法正常工作,我才是恶作剧。)。

它只需要下载该单个文件,因此我将抛出一个安全捕获,确保它与该确切的文件名匹配或停止执行。

我只是不明白为什么脚本试图下载PHP文件而不是Mp3请求。

1 个答案:

答案 0 :(得分:3)

您需要将PHP代码包装在<?php ... ?>中,否则将其视为HTML。

警告您的脚本存在很大的安全漏洞。人们可以指定一个看起来在下载目录之外的文件名,并下载系统上的任何文件。如果您不需要文件夹,最简单的阻止方法是禁止文件名中的斜杠和反斜杠。例如,您可以在定义$filename后添加此内容。

if (strstr($filename), "/") || strstr($filename), "\\") {
    die();
}

您的代码还包含语法错误:您忘记在第一行后添加分号(;)。