note 62800 added to function.header

From: Date: Thu, 09 Mar 2006 21:38:09 +0000
Subject: note 62800 added to function.header
Groups: php.notes 
Request: Send a blank email to php-notes+get-105168@lists.php.net to get a copy of this message
Seems like we are all trying to get round this IE bug (Apache 2 + PHP Server (Solaris) / IE6), after going through the solutions here I've not been that sucessful - also yet to solve the https problem. The solution I've adopted for http is a modified version of the following link: http://www.phpbuilder.com/board/showthread.php?threadid=10318152 Jon function downloadFile ($file, $mimetype) { $status = 0; if (($file != NULL) && file_exists($file)) { if(isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])) { // IE Bug in download name workaround ini_set( 'zlib.output_compression','Off' ); } // header ('Content-type: ' . mime_content_type($file) header ('Content-type: ' . $mimetype); header ('Content-Disposition: attachment; filename="'.basename($file).'"'); header ('Expires: '.gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y"))).' GMT'); header ('Accept-Ranges: bytes'); // Use Cache-control: private not following: // header ('Cache-control: no-cache, must-revalidate'); header("Cache-control: private"); header ('Pragma: private'); $size = filesize($file); if(isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=",$_SERVER['HTTP_RANGE']); //if yes, download missing part str_replace($range, "-", $range); $size2 = $size-1; $new_length = $size2-$range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range$size2/$size"); } else { $size2=$size-1; header("Content-Range: bytes 0-$size2/$size"); header("Content-Length: ".$size); } if ($file = fopen($file, 'r')) { while(!feof($file) and (connection_status()==0)) { print(fread($file, 1024*8)); flush(); } $status = (connection_status() == 0); fclose($file); } } return($status); } function downloadStream(&$stream, $filename, $mimetype) { $status = 0; $size = strlen($stream); if ($size > 0) { if(isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])) { // IE Bug in download name workaround ini_set( 'zlib.output_compression','Off' ); } // header ('Content-type: ' . mime_content_type($file) header ('Content-type: ' . $mimetype); header ('Content-Disposition: attachment; filename="' . $filename . '"'); header ('Expires: '.gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y"))).' GMT'); header ('Accept-Ranges: bytes'); // Use Cache-control: private not following: // header ('Cache-control: no-cache, must-revalidate'); header("Cache-control: private"); header ('Pragma: private'); if(isset($_SERVER['HTTP_RANGE'])) { list($a, $range) = explode("=",$_SERVER['HTTP_RANGE']); //if yes, download missing part str_replace($range, "-", $range); $size2 = $size-1; $new_length = $size2-$range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range$size2/$size"); } else { $size2=$size-1; header("Content-Range: bytes 0-$size2/$size"); header("Content-Length: ".$size); } // Dump the content. echo $stream; $status = 1; } return($status); } ---- Server IP: 84.18.202.180 Probable Submitter: 212.159.103.26 ---- X-Spam-Status: No, hits=4.3 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER, OPT_HEADER autolearn=no version=2.64 ---- Manual Page -- http://www.php.net/manual/en/function.header.php Edit -- http://master.php.net/note/edit/62800 Del: integrated -- http://master.php.net/note/delete/62800/integrated Del: useless -- http://master.php.net/note/delete/62800/useless Del: bad code -- http://master.php.net/note/delete/62800/bad+code Del: spam -- http://master.php.net/note/delete/62800/spam Del: non-english -- http://master.php.net/note/delete/62800/non-english Del: in docs -- http://master.php.net/note/delete/62800/in+docs Del: other reasons-- http://master.php.net/note/delete/62800 Reject -- http://master.php.net/note/reject/62800 Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#105168) next »