diff options
author | Steve Clay <steve@mrclay.org> | 2012-10-29 20:59:21 -0400 |
---|---|---|
committer | Steve Clay <steve@mrclay.org> | 2012-11-15 01:42:15 -0500 |
commit | d857c68fd91b1bcf586a30d86108b1898c2bb2d3 (patch) | |
tree | 033f19e11177ee00451fe26cb3a1ebf44b53bbc3 /mod/profile/icondirect.php | |
parent | dca0df8297b578c85676b1ff868a2182981bee25 (diff) | |
download | elgg-d857c68fd91b1bcf586a30d86108b1898c2bb2d3.tar.gz elgg-d857c68fd91b1bcf586a30d86108b1898c2bb2d3.tar.bz2 |
Fixes #4895: Output valid ETag and Expires headers
Diffstat (limited to 'mod/profile/icondirect.php')
-rw-r--r-- | mod/profile/icondirect.php | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/mod/profile/icondirect.php b/mod/profile/icondirect.php index c4439f78c..dbab5d31f 100644 --- a/mod/profile/icondirect.php +++ b/mod/profile/icondirect.php @@ -23,7 +23,7 @@ $guid = (int)$_GET['guid']; // If is the same ETag, content didn't changed. $etag = $last_cache . $guid; -if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == $etag) { +if (isset($_SERVER['HTTP_IF_NONE_MATCH']) && trim($_SERVER['HTTP_IF_NONE_MATCH']) == "\"$etag\"") { header("HTTP/1.1 304 Not Modified"); exit; } @@ -55,19 +55,15 @@ if ($mysql_dblink) { $user_path = date('Y/m/d/', $join_date) . $guid; $filename = "$data_root$user_path/profile/{$guid}{$size}.jpg"; - $contents = @file_get_contents($filename); - if (!empty($contents)) { + $size = @filesize($filename); + if ($size) { header("Content-type: image/jpeg"); - header('Expires: ' . date('r', strtotime("+6 months")), true); + header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', strtotime("+6 months")), true); header("Pragma: public"); header("Cache-Control: public"); - header("Content-Length: " . strlen($contents)); - header("ETag: $etag"); - // this chunking is done for supposedly better performance - $split_string = str_split($contents, 1024); - foreach ($split_string as $chunk) { - echo $chunk; - } + header("Content-Length: $size"); + header("ETag: \"$etag\""); + readfile($filename); exit; } } |