2013-03-27 166 views
0

我在我的网站上设置了播放mp3的MP3播放器。目前,用户可以轻松查看来源,搜索“mp3”并在我的网站上下载所有音乐。我知道完全阻止确定的用户下载音乐几乎是不可能的,但我想让普通用户更难。有什么办法可以混淆到mp3的链接?防止轻松下载MP3播放器上播放的MP3?

相关网站:http://boyceavenue.com/music

+1

将它们保存在文档根目录之外并通过脚本提供它们,例如, 'getmp3.php?ID = XXX'。只要XXX不是递增整数,他们就必须更努力地获得“有效”ID的列表 – 2013-03-27 21:55:27

回答

0

您没有指定要使用的语言。为了扩展Marc B写的内容,我建议使用PHP http_send_file命令以及文件的校验和。

要发送的文件,使用以下命令:

$filename = "/absolute/or/relative/path/to/file.ext"; 
$mime_type = "audio/mpeg"; // See note below 
http_send_content_disposition($filename, true); 
http_send_content_type($mime_type); 
http_throttle(0.1, 2048); 
http_send_file($filename); 

如果您服务了多种类型的使用PHP 5.3.0或更高版本的文件,你可以决定的MIME类型是这样的:

$filename = "/absolute/or/relative/path/to/file.ext"; 
$finfo = finfo_open(FILEINFO_MIME_TYPE); 
$mime_type = finfo_file($finfo, $filename); 
finfo_close($finfo); 

计算校验和很简单。只需使用md5_file即可。

那么,你可以用校验和做什么?

那么,你可以创建一个相互交叉引用的校验和和文件名数组。也就是说,你在文件的链接中加入了校验和,但是有一个小程序来查找校验和并发送mp3文件。你也可以在数据库中做到这一点。你也可以做一些应用程序,根据它们的校验和将文件存储在目录结构中(music/3/3a/song.mp3,校验和为3a62f6或其他)。

如果您不关心被损坏的文件名,您可以使用文件名的校验和保存文件。这可以在上传时(如果您的文件正在上传)或通过批处理脚本(使用CLI)完成。

你应该做的另一件事是把一个默认文档(index.php或其他)告诉别人看。也禁用浏览目录。如果只有极少数人需要访问,则还可以在目录上输入密码,因此需要登录才能访问这些文件。