PHP只允许通过页面下载文件

PHP只允许通过页面下载文件,php,Php,我有一些mp3文件,我想只允许付费会员通过页面收听和下载。问题是,如果我这样做了 Order deny,allow Deny from all Allow from website.com 它成功阻止用户在www.example.com/song/song.mp3上下载 我能做到 header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream');

我有一些mp3文件,我想只允许付费会员通过页面收听和下载。问题是,如果我这样做了

Order deny,allow
Deny from all
Allow from website.com
它成功阻止用户在www.example.com/song/song.mp3上下载

我能做到

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
但它只允许用户下载。如果我有一个html5播放器,允许用户在下载之前进行流式播放,它会说:“由于服务器或网络故障,或者由于格式不受支持,音频无法加载。”如果我取消htaccess的线路,它将能够流式播放

这是球员

<video id="player" class="video-js vjs-default-skin" controls preload="auto"
            data-setup="{}">
<source src="song/song.mp3" type='audio/mp3' />
</video>


我有没有办法允许付费用户只从特定页面下载和流式传输,而限制其他人?谢谢

HTML 5播放器是否在同一个域中(完全匹配)?如果没有,您将需要设置一个交叉源请求来强制发送auth头。您好,游戏在同一个域上。我把它添加到问题中,这样你就可以看看使用正确的mime类型了?你是说?mime类型与你的问题无关。据我所知,您仍在访问原始mp3文件,因此下载脚本中的标题不会影响它。HTML 5播放器是否在同一个域中(完全匹配)?如果没有,您将需要设置一个交叉源请求来强制发送auth头。您好,游戏在同一个域上。我把它添加到问题中,这样你就可以看看使用正确的mime类型了?你是说?mime类型与你的问题无关。据我所知,您仍在访问原始mp3文件,因此下载脚本中的标题不会影响它。HTML 5播放器是否在同一个域中(完全匹配)?如果没有,您将需要设置一个交叉源请求来强制发送auth头。您好,游戏在同一个域上。我把它添加到问题中,这样你就可以看看使用正确的mime类型了?你是说?mime类型与你的问题无关。据我所知,您仍在访问原始mp3文件,因此下载脚本中的标题不会影响它。