forked from torne/Tiny-Tiny-RSS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
image.php
54 lines (43 loc) · 1.41 KB
/
image.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
set_include_path(dirname(__FILE__) ."/include" . PATH_SEPARATOR .
get_include_path());
require_once "config.php";
// backwards compatible wrapper for old-style image caching
/* if (isset($_GET['url'])) {
$url = base64_decode($_GET['url']);
$filename = CACHE_DIR . '/images/' . sha1($url) . '.png';
if (file_exists($filename)) {
header("Content-type: image/png");
echo file_get_contents($filename);
} else {
header("Location: $url");
}
return;
} */
@$hash = basename($_GET['hash']);
if ($hash) {
$filename = CACHE_DIR . '/images/' . $hash . '.png';
if (file_exists($filename)) {
/* See if we can use X-Sendfile */
$xsendfile = false;
if (function_exists('apache_get_modules') &&
array_search('mod_xsendfile', apache_get_modules()))
$xsendfile = true;
if ($xsendfile) {
header("X-Sendfile: $filename");
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
} else {
header("Content-type: image/png");
$stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT";
header("Last-Modified: $stamp", true);
ob_clean(); // discard any data in the output buffer (if possible)
flush(); // flush headers (if possible)
readfile($filename);
}
} else {
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
echo "File not found.";
}
}
?>