51 lines
1.3 KiB
PHP
51 lines
1.3 KiB
PHP
<?php
|
|
/*
|
|
* getresource.php wird an Stelle geschützter Resourcen in eine Seite
|
|
* eingebunden. Die Ressourcen liegen dafür in einem geschützten Verzeichnis,
|
|
* das über den Webserver nicht erreichbar ist.
|
|
* getresource.php öffnet die geschützte Datei lokal und "reicht sie durch";
|
|
* auf diese Weise hat der PHP-Code die Kontrolle über die Herausgabe.
|
|
* Damit getresource.php nicht von außen mit GET-Parametern gefüttert werden
|
|
* kann, überprüft es bei jedem Aufruf, ob der Nutzer die Berechtigung zum
|
|
* Öffnen der Datei hat.
|
|
*
|
|
* $_GET['item'] enthält den absoluten Pfad zur Resource.
|
|
* Dieser wird mit security.itemURL() generiert.
|
|
*/
|
|
|
|
@session_start();
|
|
|
|
include_once($_SERVER['DOCUMENT_ROOT'].'/daten/php/security.php');
|
|
|
|
if (isset($_GET['item'])) {
|
|
$item = $_GET['item'];
|
|
if (itemAccessible($item)) {
|
|
$fp = fopen($item, 'r');
|
|
|
|
// Content-type ermitteln
|
|
$imageInfo = getimagesize($item);
|
|
switch ($imageInfo[2]) {
|
|
case 1:
|
|
header('Content-type: image/gif');
|
|
break;
|
|
case 2:
|
|
header('Content-type: image/jpeg');
|
|
break;
|
|
case 3:
|
|
header('Content-type: image/png');
|
|
break;
|
|
case 4:
|
|
header('application/x-shockwave-flash');
|
|
break;
|
|
default:
|
|
header('Content-type: text/plain');
|
|
}
|
|
|
|
fpassthru($fp);
|
|
fclose($fp);
|
|
exit;
|
|
}
|
|
}
|
|
header('HTTP/1.0 403 Forbidden');
|
|
?>
|