强行下载一个范围

时间:2012-02-28 07:26:49

标签: php html curl

我想强制下载管理器只下载一个字节范围。

现在发生了什么,我的下载管理器从我的php文件请求多个范围,我不希望这种情况发生(我有理由)是否有任何http标头设置强制一个范围下载?

我使用此代码阻止任何第二范围连接,但代码问题,恢复被禁用

if ($_SERVER['REQUEST_METHOD']=='GET' && isset($_SERVER['HTTP_RANGE']) && $range=stristr(trim($_SERVER['HTTP_RANGE']),'bytes='))
{
$arrr = explode('-', $range);
if (isset($arrr[1])) die();
$f= fopen('era','w');
fwrite($f, $range);
fclose($f);
$start_range = $arrr[0];
$range=substr($range,6);
header("Content-Range: bytes $range/$filesize");
}

1 个答案:

答案 0 :(得分:1)

我实际上找到了一个解决这个问题的技巧,它可能不是专业的方式,但它就像一个魅力。我检查标题范围,如果它从xxxx字节到结尾然后允许它。如果它要求范围xxx到yyy然后发送一个错误的标题(这是技巧),以便下载管理器将等待有效的响应,但它永远不会得到,所以操作将是时间,并重复请求。这是一个简单的if命令,使魅力

$range=substr($range,6);
$arrr = explode('-', $range);
$start_range = $arrr[0];
if(!isset($arrr[1])) header("Content-Range: bytes $range/$filesize");
else header("Content-Range: bytes bytes $arrr[0]");//bad header