Dateien schützen
Maresa P.
- php
0 Reto Strub0 wahsaga
Hallo,
ich möchte auf meinem Server in einem Verzeichnis Dateien hochladen, die der Öffentlichkeit nicht direkt zugänglich gemacht werden sollen. Die Dateien kommen also ausserhalb des htdocs Verzeichnis meines Apache Server hin.
Ich möchte die Dateien nun Usern, die sich vorher eingeloggt haben (UMS funktioniert komplett mit Php Sessions und MySql Datenbank) die Daten zur Verfügung stellen.
Es müsste doch möglich sein, eine Datei mittels PHP einzulesen (PHP hat ja Zugriff auf das komplette File System) und dann mit beiinflusstem HTTP Head an den Browser zu senden.
Ist das möglich?
Wo ist das beschrieben? Gibts ein Tutorial?
Wie realisiere ich sowas?
Vielen Dank
Maresa P.
Hallo Maresa
Wenn ich dich richtig verstehe, willst du einfach ein Verzeichniss per HTML einer bestimmten Benutzergruppe anzeigen.
Wenn du ein Verzeichniss per .htaccess schützt, kannst du dann das Verzeichniss mittels PHP auslesen (opendir() und readdir()), und danach darstellen.
Ein kleines skript:
$verz = opendir($Pfad);
while ($file = readdir($verz))
{
if($file != "." && $file != "..")
{
echo("$file<BR>\n");
}
}
Die beiden Einträge . & .. stehen fürdie Übergeordneten Ordner.
Gruss Reto
Wenn du ein Verzeichniss per .htaccess schützt, kannst du dann das Verzeichniss mittels PHP auslesen (opendir() und readdir()), und danach darstellen.
Hi!
nein, Du verstehst mich leider nicht richtig. Ich will nicht nur ein Verzeichnisnamen oder einen Dateinmaen darstellen, sondern ich will eine Datei downloadbar machen, obewohl sie in einem nicht für die Öffentlichkeit Zugänglichen Verzeichnis liegt.
Viele Grüße
Maresa P.
Nun...
lies die Datei per PHP mit readfile ein. (Sorge selbstverständlich dafür, dass vor dieser Aktion noch keinerlei Ausgabe erfolgt ist, sonst kann der Header nicht gesendet werden.)
Du nimmst vielleicht auch ein Script mit dem Namen "download" o.ä. (müsstest dann Apache aber noch mitteilen, dass er die ausführen soll - trotz keiner Dateierweiterung).
Jedenfalls hast du den Inhalt dieser Datei $fname in einer Variablen, sagen wir $var. Dann kannst du ihn an den Browser senden (Micro$oft Internet Exploder benötigt einen speziellen Header msdownload:)
$size = strlen($var);
if (ereg("MSIE",$HTTP_USER_AGENT)) {
header("Content-type: application/x-msdownload");
}
else {
header("Content-type: application/octetstream");
}
header("Content-disposition: attachment; filename=$fname");
header("Content-Length: ".$size);
So.. hoffe, das klappt.
hi,
Wo ist das beschrieben? Gibts ein Tutorial?
hier: http://www.dclp-faq.de/q/q-datei-download.html
gruss,
wahsaga