使用chrome下载文件时PHP错误(未定义的偏移量:1)

问题描述 投票:0回答:1

我有一个PHP脚本来管理下载(VIP用户只能下载)该脚本适用于常见的下载管理器和浏览器(如firefox,IE,IDM和边缘),但是当我想使用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 = '';
        }
    }

我已经尝试了一些我在stackoverflow主题中找到的代码,但没有工作!

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. ',');
php undefined offset
1个回答
1
投票

额外范围是可选的。

基本上,explode(',', $range_orig, 2)可以获得一个值的数组(当只有一个范围时)或一个包含2个值的数组(当存在至少2个时)。

您可以在array_pad之前使用explodenull填充到您的数组到第二个索引。你已经尝试了但是使用了负数索引,这使你的数组​​[null, <first_range>]而不是[<first_range>, null]

所以,将代码更改为:

list($range, $extra_ranges) = array_pad(explode(',', $range_orig, 2), 2, null);
© www.soinside.com 2019 - 2024. All rights reserved.