Eintrag-Details: Download in PHP-Skripten

15.04.2006

Download in PHP-Skripten

Eine häufig auftauchende Frage ist: Wie kann ich auf meiner Internetseite eine Datei zum Download anbieten, ohne einen direkten Link auf die Datei zu verwenden?

[Mehr:]

Hintergrund dieser Frage: Ich habe einen Passwort-geschützten Bereich, bei dem nur bestimmte, registrierte Benutzer einen Zugang haben. Wie so etwas programmiert werden kann, finden Sie in diesem Artikel:

Zum Artikel: Login-Seite in PHP

Damit kann ich zwar über eine Session den Besucher identifizieren, aber ein Datei-Download kann damit noch nicht durchgeführt werden. Der Grund ist einfach: Wenn ich einen Link auf eine Datei angeben, könnte ja jeder auch ohne Kenntnis des Passwortes diese Datei herunterladen.
Um eine solche Datei geheim zu halten, gibt es prinzipiell zwei Möglichkeiten:

  1. Die Datei außerhalb des Webspace speichern
  2. Die Datei in einem mit .htaccess geschützten Verzeichnis speichern

Die empfohlene Methode ist das Speichern außerhalb des Webspace. Wenn Ihre Internet-Präsenz beispielsweise im Verzeichnis /home/username/html_public/ beginnt (das ist der sogenannte DOCUMENT_ROOT) dann könnten Sie folgendes Verzeichnis für Ihre Download-Dateien anlegen: /home/username/downloads/.

Auf dieses Verzeichnis hat der normale Besucher mit dem Browser keinen Zugriff, da es oberhalb der Verzeichnisstruktur von html_public liegt. Ihr PHP-Skript kann jedoch problemlos auf dieses Verzeichnis zugreifen.

Wenn Sie diese Möglichkeit nicht haben, weil Ihr Provider keinen Zugriff oberhalb von html_public erlaubt, können Sie vielleicht ein passwortgeschütztes Verzeichnis in der normalen Struktur Ihres Webspace anlegen. Dazu bieten die Provider üblicherweise ein interaktives Werkzeug an, auf das man über die Verwaltung des Webspace zugreifen kann. Fragen Sie dazu einfach Ihren Provider.

Solche geschützten Verzeichnisse werden über eine spezielle Steuerdatei mit dem Namen ".htaccess" (der Punkt am Anfang ist wichtig) erzeugt. Nähere Informationen, wie man Verzeichnisse mit .htaccess schützen kann finden Sie beispielsweise hier:

http://www.univie.ac.at/ZID/passwortschutz/
http://de.selfhtml.org/servercgi/server/htaccess.htm

Seiten: 1 2 3 4 5

Permalink 15.04.2006 10:15:03, von Marian Email , 1411 Wörter, 41469 mal angeschaut   German (DE) Kategorien: PHP

Kommentare, Pingbacks:

Kommentar von: Matthias [Besucher] · http://www.der-rhoen-fuehrer.info
Wie kann ich eine Downloaddatei erstellen, die erst die Daten aus einer MySQL Datenbank zusammen sucht und dann automatisch im *.ovl Dateiformat für Top50 Karten abspeichert?

Mfg Maffy
Permalink 14.10.2006 @ 16:32
Kommentar von: Jay Konrad [Besucher]
Ich habe da noch ein kleines Problem entdeckt:

ich habe eine PHP-Seite, auf der Dinge zum Download liegen. Diese Seite besteht zum größten Teil aus HTML. So steht zum Beispiel im head drin:



Wenn ich nun statt des normalen downloads ihr Script nehme, passiert mir folgendes:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/vampire/iminnern.php:22) in /var/www/vampire/template_download.php on line 10

Nach kurzem Überlegen wurde mir auch klar, wieso - die erstgenannten Infos werden zuerst geschickt, damit hat das download-script gelitten. Irgendeine Idee, wie ich das gut löse?
Permalink 10.12.2006 @ 09:35
Kommentar von: Marian [Mitglied] · http://www.heddesheimer.de
Die Meldung zeigt, dass in Ihrem Skript in Zeile 10 bereits Ausgaben gemacht wurden. Sie müssen diese Ausgaben vermeiden, damit die Header-Information in Zeile 22 korrekt verarbeitet werden kann.

Wie so etwas genau geht, finden Sie in meinem PHP-Onlinekurs, den Sie unter www.lernpilot.de/wbt/ buchen können. In dem Kurs wird detailliert auf die spezifischen Probleme bei der Verwendung von PHP-Sessions eingegangen und auch, wie Sie diese vermeiden können.

Permalink 10.12.2006 @ 10:15
Kommentar von: Daniel [Besucher]
Hallo.
Nimmt der Download per PHP mehr Serverleistung in anspruch, als die Datei einfach so freizugeben?
MFG
Permalink 17.01.2008 @ 17:20

Werbung

Online-Kurse

  • Bequem PHP lernen bei freier Zeiteinteilung von zuhause
  • Der Onlinekurs den jeder versteht
  • www.lernpilot.de/wbt/

Konnte ich helfen?

mehr Werbung