Re: file downloads using header problem
| From: | memoimyself at yahoo dot com dot br | Date: | Tue, 10 Feb 2004 13:02:47 +0000 |
| Subject: | Re: file downloads using header problem | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-177277@lists.php.net to get a copy of this message | ||
Hello Joshua,
On 9 Feb 2004 at 15:45, Joshua Minnie wrote:
> Does anybody have any idea to allow for multiple downloads while another
> one was going on. Maybe some additional headers? I have tried adding
> headers before and after where I open the file for HTTP/1.1 200 OK and the
> corresponding headers. I have also tried using a simple meta refresh, but
> that doesn't work because it won't refresh until the page is entirely
> loaded.
>
> I am at a loss, I can't seem to find answer when I google it either.
> Maybe I'm just missing something. I don't know.
The same script can only send headers to the browser once each time it's loaded. In
other words, after a script has been parsed and the page has been loaded, it cannot
send more headers to the browser unless you reload it. Since in your case the same
script (i.e. same page) does everything, it can only handle one download at a time;
that's basically what I think you're missing.
A simple solution is to have each download link call a *separate* script (i.e. another
page) whose sole purpose is to take care of generating the download, i.e. sending the
headers and the file to the user's browser. Think about how ZDNet or Tucows, for
example, work: first you choose the file you want to download from a menu (the main
download page, which doesn't actually generate the downloads), and then when you
click on the download link you're taken to a new page (the one that actually takes care
of the download) that tells you to wait a few seconds until the download starts.
If you're concerned about security (i.e. unauthorized users downloading files by
accessing the actual download script directly without going through the page where
they see the file list etc.), you can use some kind of random authorization code that is
sent by the main download script via a GET string to the actual download page. That
way, if the right authorization code is not received by the script on the page that
generates the headers and sends the file to the browser, the download will fail. (Note
that I suggested a GET string because you cannot normally start sessions before
sending headers to the browser, as session_start() will itself send headers. But you can
always play with output buffering if you like.)
Hope this helps,
Erik