我正试图强制下载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请求。
答案 0 :(得分:3)
您需要将PHP代码包装在<?php
... ?>
中,否则将其视为HTML。
警告您的脚本存在很大的安全漏洞。人们可以指定一个看起来在下载目录之外的文件名,并下载系统上的任何文件。如果您不需要文件夹,最简单的阻止方法是禁止文件名中的斜杠和反斜杠。例如,您可以在定义$filename
后添加此内容。
if (strstr($filename), "/") || strstr($filename), "\\") {
die();
}
您的代码还包含语法错误:您忘记在第一行后添加分号(;
)。