Re: Header problem - SOLVED
| From: | Kim Madsen | Date: | Mon, 19 Oct 2009 21:44:57 +0000 |
| Subject: | Re: Header problem - SOLVED | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-299081@lists.php.net to get a copy of this message | ||
This has been solved today. Talawa had a similar problem and came up with a solution to his problem, namely using session_write_close() before creating the headers. That stunt also solved my problem :-)
--
Kind regards
Kim Emax
Kim Madsen wrote on 2009-10-03 13:30:
> Hi PHP people
>
> I have a really strange and annoying problem. I've got a site, where
> members can download music. User clicks index.php (in index.php
> there's an iframe, that opens another file), if certain check are okay
> then a popup window opens download.php, where a mp3 file is fetched
> from the server and renamed in the header, then pushed to the enduser,
> this works fine. But now I want to create zipfiles too but when a user
> downloads a zipfile it's like the whole site is freezed until download
> has completed. My guess is that this is some sort of header problem
> (see headers below), due to three headers at the same time, cause the
> class works as expected in the test page i've created. Inputs to
> correct headers would be appriciated very much :-)
>
> Mp3 headers:
> $new_filename = "attachment; filename=\"{$artist} - {$title}.mp3\"";
> header('Content-Description: File Transfer');
> header("Content-Type: application/octet-stream");
> header("Content-Length: $size");
> header("Content-Disposition: $new_filename");
> header("Content-Transfer-Encoding: binary");
> readfile($source_file);
>
> Zip headers:
> $zip = new zipfile();
> $zip->add_dir(".");
> $new_filename= "{$artist} - {$title}.mp3";
> if(mysql_num_rows($result)) {
> $zip->add_file($file, $new_filename);
> }
> header("Pragma: public");
> header("Expires: 0");
> header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
> header("Cache-Control: private",false);
> header("Content-type: application/zip");
> #header("Content-Type: application/octet-stream");
> header("Content-disposition: attachment; filename=\"zipTest.zip\"");
> header('Content-Transfer-Encoding: binary');
> ob_end_clean();
> echo $zip->file();
>
> Code example: http://lps.netlinq.dk/test010/test_zip.class.php
>
> Headers (fetched with firefox add-on: live http headers)
>
> This is headers from the site, where the problem occurs:
>
> 1. click on the link to a title (Maxwell in this case)
> ----------------------------------------------------------
> http://lps.netlinq.dk/?action=download&track_id=357
>
> GET /?action=download&track_id=357 HTTP/1.1
> Host: lps.netlinq.dk
> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/
> 20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
> *;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip,deflate
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Connection: keep-alive
> Referer: http://lps.netlinq.dk/?action=download&track_id=350
> Cookie: login_email=kim%40emax.dk;
> PHPSESSID=fbb5d6adec802766cf6f638c99ab4f1d
>
> HTTP/1.x 200 OK
> Date: Fri, 02 Oct 2009 15:15:21 GMT
> Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
> mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24) mod_ssl/2.2.8 OpenSSL/0.9.8g
> X-Powered-By: PHP/5.2.4-2ubuntu5.6
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
> check=0
> Pragma: no-cache
> Vary: Accept-Encoding
> Content-Encoding: gzip
> Content-Length: 4250
> Keep-Alive: timeout=15, max=100
> Connection: Keep-Alive
> Content-Type: text/html
>
> 2. I click on "download zip" (this is a link to index.php)
> if conditions are met, then a popup with download.php is activated and
> here a zip header is made
>
> ----------------------------------------------------------
> http://lps.netlinq.dk/index.php
>
> POST /index.php HTTP/1.1
> Host: lps.netlinq.dk
> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/
> 20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
> *;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip,deflate
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Connection: keep-alive
> Referer: http://lps.netlinq.dk/?action=download&track_id=357
> Cookie: login_email=kim%40emax.dk;
> PHPSESSID=fbb5d6adec802766cf6f638c99ab4f1d
> Content-Type: application/x-www-form-urlencoded
> Content-Length: 131
> action=ask_questions&download_zipfile=1&version_id
> %5B1065%5D=1&version_id%5B1066%5D=1&version_id%5B1067%5D=1&version_id
> %5B1068%5D=1
>
> HTTP/1.x 200 OK
> Date: Fri, 02 Oct 2009 15:15:29 GMT
> Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
> mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24) mod_ssl/2.2.8 OpenSSL/0.9.8g
> X-Powered-By: PHP/5.2.4-2ubuntu5.6
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
> check=0
> Pragma: no-cache
> Vary: Accept-Encoding
> Content-Encoding: gzip
> Content-Length: 3216
> Keep-Alive: timeout=15, max=99
> Connection: Keep-Alive
> Content-Type: text/html
> ----------------------------------------------------------
> http://lps.netlinq.dk/download.php?track_id=357&member_id=1&string=41e0cd250ca3a40598e2019fd4c813cc&kbit=320&zipfile=1
>
>
> GET /download.php?
>
track_id=357&member_id=1&string=41e0cd250ca3a40598e2019fd4c813cc&kbit=320&zipfile=1
>
> HTTP/1.1
> Host: lps.netlinq.dk
> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/
> 20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
> *;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip,deflate
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Connection: keep-alive
> Referer: http://lps.netlinq.dk/index.php
> Cookie: login_email=kim%40emax.dk;
> PHPSESSID=fbb5d6adec802766cf6f638c99ab4f1d
>
> HTTP/1.x 200 OK
> Date: Fri, 02 Oct 2009 15:15:30 GMT
> Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
> mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24) mod_ssl/2.2.8 OpenSSL/0.9.8g
> X-Powered-By: PHP/5.2.4-2ubuntu5.6
> Expires: Thu, 19 Nov 1981 08:52:00 GMT
> Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-
> check=0
> Pragma: no-cache
> Content-Disposition: attachment; filename="Maxwell - Bad Habits
> (Remixes).zip"
> Content-Transfer-Encoding: binary
> Content-Length: 54234978
> Keep-Alive: timeout=15, max=98
> Connection: Keep-Alive
> Content-Type: application/zip
> ----------------------------------------------------------
> 3. as long as the zip file is downloading the site "freezes" until
> download is complete, then the link I've clicked is "activated"
> ___________________________________________________________________________
>
> And this is the headers from the test page:
> http://lps.netlinq.dk/test010/test_zip.class.php
> http://home.emax.dk/~emax/test/test_zip.class.php
>
> Same files, different servers
>
> headers from test010:
>
> http://home.emax.dk/~emax/test/test_zip.class.php?zip_to_browser=1
>
> GET /~emax/test/test_zip.class.php?zip_to_browser=1 HTTP/1.1
> Host: home.emax.dk
> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/
> 20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
> *;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip,deflate
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Connection: keep-alive
> Referer: http://home.emax.dk/~emax/test/test_zip.class.php?test=15
>
> HTTP/1.x 200 OK
> Date: Fri, 02 Oct 2009 14:31:08 GMT
> Server: Apache/1.3.37 (Unix) PHP/4.4.4
> X-Powered-By: PHP/4.4.4
> Pragma: public
> Expires: 0
> Cache-Control: must-revalidate, post-check=0, pre-check=0, private
> Content-Disposition: attachment; filename="zipTest2.zip"
> Content-Transfer-Encoding: binary
> Keep-Alive: timeout=15, max=99
> Connection: Keep-Alive
> Transfer-Encoding: chunked
> Content-Type: application/zip
> ____________________________________________________________________
>
> headers from Netlinq:
>
> GET /test010/test_zip.class.php?zip_to_browser=1 HTTP/1.1
> Host: lps.netlinq.dk
> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.2) Gecko/
> 20090803 Ubuntu/9.04 (jaunty) Shiretoko/3.5.2
> Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/
> *;q=0.8
> Accept-Language: en-us,en;q=0.5
> Accept-Encoding: gzip,deflate
> Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Connection: keep-alive
> Referer: http://lps.netlinq.dk/test010/test_zip.class.php?test=21
> Cookie: login_email=kim%40emax.dk;
> PHPSESSID=fbb5d6adec802766cf6f638c99ab4f1d
>
> HTTP/1.x 200 OK
> Date: Fri, 02 Oct 2009 14:55:37 GMT
> Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch
> mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24) mod_ssl/2.2.8 OpenSSL/0.9.8g
> X-Powered-By: PHP/5.2.4-2ubuntu5.6
> Pragma: public
> Expires: 0
> Cache-Control: must-revalidate, post-check=0, pre-check=0, private
> Content-Disposition: attachment; filename="zipTest2.zip"
> Content-Transfer-Encoding: binary
> Keep-Alive: timeout=15, max=100
> Connection: Keep-Alive
> Transfer-Encoding: chunked
> Content-Type: application/zip
> ____________________________________________________________________
>
--
Kind regards
Kim Emax - masterminds.dk