File Handler returning garbled files.

Posted by forcripesake on Stack Overflow See other posts from Stack Overflow or by forcripesake
Published on 2010-04-09T18:37:09Z Indexed on 2010/04/09 19:53 UTC
Read the original article Hit count: 283

Filed under:
|
|

For the past 3 months my site has been using a PHP file handler in combination with htaccess. Users accessing the uploads folder of the site would be redirected to the handler as such:

RewriteRule  ^(.+)\.*$ downloader.php?f=%{REQUEST_FILENAME} [L]

The purpose of the file handler is pseudo coded below, followed by actual code.

//Check if file exists and user is downloading from uploads directory; True.
//Check against a file type white list and set the mime type(); $ctype = mime type;
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");

As of yesterday, the handler started returning garbled files, unreadable images, and had to be bypassed. I'm wondering what settings could have gone awry to cause this.

© Stack Overflow or respective owner

Related posts about php

Related posts about files