PHP 使用 chrome 下载文件时出错(未定义的偏移量:1)
PHP Error (Undefined offset: 1) when using chrome to download a file
我有一个PHP脚本来管理下载(VIP用户只能下载)
该脚本适用于常见的下载管理器和浏览器(如 firefox、IE、IDM 和 edge),但是当我想使用 chrome 下载文件时出现此错误:
未定义的偏移量:第 103 行 /home/username/public_html/index.php 中的 1
第 103 行:
列表($range, $extra_ranges) = explode(',', $range_orig, 2);
//check if http_range is sent by browser (or download manager)
if($is_resume && isset($_SERVER['HTTP_RANGE']))
{
list($size_unit, $range_orig) = explode('=', $_SERVER['HTTP_RANGE'], 2);
if ($size_unit == 'bytes')
{
//multiple ranges could be specified at the same time, but for simplicity only serve the first range
//http://tools.ietf.org/id/draft-ietf-http-range-retrieval-00.txt
list($range, $extra_ranges) = explode(',', $range_orig, 2);
}
else
{
$range = '';
}
}
我尝试了一些在 Whosebug 主题中找到的代码,但没有用!
list($range, $extra_ranges) = explode(',', $range_orig);
list($range, $extra_ranges) = array_pad(explode(',', $range_orig, 2), -2, null);
list($range, $extra_ranges) = explode(',', $range_orig. ',');
额外的范围是可选的。
基本上,explode(',', $range_orig, 2)
为您提供一个包含一个值的数组(当只有一个范围时)或包含 2 个值的数组(当至少有 2 个时)。
您可以在 explode
之前使用 array_pad
将 null
填充到您的数组到第二个索引上。您已经尝试过但使用了负索引,这使得您的数组 [null, <first_range>]
而不是 [<first_range>, null]
.
因此,将您的代码更改为:
list($range, $extra_ranges) = array_pad(explode(',', $range_orig, 2), 2, null);
我有一个PHP脚本来管理下载(VIP用户只能下载) 该脚本适用于常见的下载管理器和浏览器(如 firefox、IE、IDM 和 edge),但是当我想使用 chrome 下载文件时出现此错误:
未定义的偏移量:第 103 行 /home/username/public_html/index.php 中的 1
第 103 行: 列表($range, $extra_ranges) = explode(',', $range_orig, 2);
//check if http_range is sent by browser (or download manager)
if($is_resume && isset($_SERVER['HTTP_RANGE']))
{
list($size_unit, $range_orig) = explode('=', $_SERVER['HTTP_RANGE'], 2);
if ($size_unit == 'bytes')
{
//multiple ranges could be specified at the same time, but for simplicity only serve the first range
//http://tools.ietf.org/id/draft-ietf-http-range-retrieval-00.txt
list($range, $extra_ranges) = explode(',', $range_orig, 2);
}
else
{
$range = '';
}
}
我尝试了一些在 Whosebug 主题中找到的代码,但没有用!
list($range, $extra_ranges) = explode(',', $range_orig);
list($range, $extra_ranges) = array_pad(explode(',', $range_orig, 2), -2, null);
list($range, $extra_ranges) = explode(',', $range_orig. ',');
额外的范围是可选的。
基本上,explode(',', $range_orig, 2)
为您提供一个包含一个值的数组(当只有一个范围时)或包含 2 个值的数组(当至少有 2 个时)。
您可以在 explode
之前使用 array_pad
将 null
填充到您的数组到第二个索引上。您已经尝试过但使用了负索引,这使得您的数组 [null, <first_range>]
而不是 [<first_range>, null]
.
因此,将您的代码更改为:
list($range, $extra_ranges) = array_pad(explode(',', $range_orig, 2), 2, null);