Can you help explain this code? It looks like you're on the right track but
have a few flaws (at first glance).

> <?php
> session_cache_limiter('public');
> session_start();

Is there a reason to be using sessions here?

> set_time_limit(0);
> $file=$_REQUEST['file'];
> $extstart=strpos($file, ".");

What does $extstart contain now?

> $ext=substr($file, $extstart+1);

So $ext is now a piece of the file. Why?

> $dir="d:\\downloadable_courses";
> $size=filesize($dir."\\".$file);
> header("Accept-Ranges: bytes");

So $size is now the size of the entire file (not the piece).

> if(isset($_ENV['HTTP_RANGE'])) {
>  list($a, $range)=explode("=",$_ENV['HTTP_RANGE']);

So $a is now bytes, and $range is something like 123-456

>  str_replace($range, "-", $range);

This makes no sense. The range requested is bytes 123 through 456, and you're
converting this to 123456. Why?

>  $size2=$size-1;
>  header("Content-Range: $range$size2/$size");
>  $new_length=$size2-$range;

This will definitely not work, based on my comments above.

If someone sends this header:

Range: bytes=0-1023

and your resource is 2048 bytes in size, your response should include this
header:

Content-Range: bytes 0-1023/2048

Work on generating the correct string before you bother actually using them as
headers and trying for the full solution.

Hope that helps.

Chris

=====
Become a better Web developer with the HTTP Developer's Handbook
http://httphandbook.org/

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to