Aksine virgül üzerinde patlayan bir 416
. Then just parse göndermeden önce test bunu regex kullanmak ,
ve tire {[(4) }]. Ben de size regex \d+
kullanılan, ancak bu aslında not gerekli olduğunu görüyoruz. Aralık indeksler ya ihmal edildiğinde, o zaman sadece "ilk bayt" veya "son byte" anlamına gelir. Siz de regex bu kapsamalıdır. Ayrıca bkz Range header in the HTTP spec bunu işlemek zannediyorsunuz nasıl.
Başlama örnek:
if (isset($_SERVER['HTTP_RANGE'])) {
if (!preg_match('^bytes=\d*-\d*(,\d*-\d*)*$', $_SERVER['HTTP_RANGE'])) {
header('HTTP/1.1 416 Requested Range Not Satisfiable');
header('Content-Range: bytes */' . filelength); // Required in 416.
exit;
}
$ranges = explode(',', substr($_SERVER['HTTP_RANGE'], 6));
foreach ($ranges as $range) {
$parts = explode('-', $range);
$start = $parts[0]; // If this is empty, this should be 0.
$end = $parts[1]; // If this is empty or greater than than filelength - 1, this should be filelength - 1.
if ($start > $end) {
header('HTTP/1.1 416 Requested Range Not Satisfiable');
header('Content-Range: bytes */' . filelength); // Required in 416.
exit;
}
// ...
}
}
Edit: $ başlangıç her zaman $ bitiş az olmalıdır