![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Patrick, 31. 05. 2007, 17:27
Hi Forum,
wie kann ich mittels PHP eine Datei aus einem mit htaccess geschützten Verzeichnis lesen und ausgeben?
z.B. bei PDFs.
Danke
Patrick
Die folgende Nachricht zum Thema stammt von: wahsaga, 31. 05. 2007, 17:36
hi,
»» wie kann ich mittels PHP eine Datei aus einem mit htaccess geschützten Verzeichnis lesen und ausgeben?
Du redest vom Zugriff über HTTP?
In dem du die Auth-Daten mitgibst.
http://www.php.net/manual/de/wrappers.http.php
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
Die folgende Nachricht zum Thema stammt von: Patrick, 31. 05. 2007, 18:24
Hi wahsaga,
nein, eigentlich nicht.
PHP soll die Datei direkt einlesen, quasi ohne Link.
Nur auf Filebasis.
»» Du redest vom Zugriff über HTTP?
»» In dem du die Auth-Daten mitgibst.
Grüße
Patrick
Die folgende Nachricht zum Thema stammt von: Pia, 31. 05. 2007, 18:40
Hi,
»» nein, eigentlich nicht.
»» PHP soll die Datei direkt einlesen, quasi ohne Link.
»» Nur auf Filebasis.
»»
Dann interessiert auch kein htacces oder sonstwas.
readfile
include
require
file_get_contents
...etc.
carpe diem
Pia
Die folgende Nachricht zum Thema stammt von: Steel (ohne Anmeldung), 31. 05. 2007, 19:08
Das stimmt. Solange das Script und das geschuetze Verzeichnis dem gleichen Server gehoeren... Ich hab hier den Verdacht, dass dem nicht so ist, oder?
Die folgende Nachricht zum Thema stammt von: afra, 31. 05. 2007, 20:19
Hallo Patrick!
Du willst sicherlich aus einem geschützen Verzeichnis Dateien zum Download anbieten, die nur von angemeldeten Usern herunter geladen werden können. Das könntest Du auch über einen htaccess Zugriffsschutz erreichen. Wesentlich aufwändiger weil sicherheitskritischer könntest Du es über PHP ausliefern. Also lesen, header basteln und ab damit. Beachte meine Anmerkung am Ende.
Überprüfen ob das File da ist:
file_exists($filename)
Fileextension und Content Type bestimmen
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch ($file_extension) {
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpe": case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
Diverse Header setzen:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header ("Content-Disposition: attachment; filename=$filename");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($filename));
set_time_limit(0);
@readfile("$filename") or die("Keine Datei");
Unbedingt daran denken, dass Du sicher gehen musst, dass keine anderen Verzeichnisse als das von Dir gewünschte vom Script aufgerufen werden kann. Am besten mit einer Positivliste.
Schönen Gruß
Afra
--
Endlich Ruhe
© 1998-2006
Impressum, Software: Classic Forum