Wie realisiere ich Downloads mit PHP?

Möglichkeit A

Code: Alles auswählen

//hier z.B. Code für Referer-Check oder Downloadcounter

header("Location: downloads/irgendwas.zip");

Vorteil: Der eigentliche Downloadprozess wird vom Webserver behandelt, was performance- und funktionsmäßig besser ist.
Nachteil: wer will, kommt mit entsprechenden Programmen trotzdem an die Ziel-URL. Allerdings reicht ein simples Umbenennen des Ordners mit den Dateien, um alle "illegalen" Links ins Leere laufen zu lassen, ohne dass die "legalen" beeinträchtigt werden.
Fazit: Einfache Lösung, um z.B. Referer-Checks oder Downloadcounter zu realisieren.

Möglichkeit B:

Code: Alles auswählen

//hier z.B. Code für Referer-Check oder Downloadcounter

header("Content-type: application/zip");
header("Content-disposition: attachment; filename=irgendwas.zip");
readfile("downloads/irgendwas.zip");

Vorteil: ein Umgehen der PHP-Datei ist auch mit speziellen Programmen nicht möglich.
Nachteile: Der PHP-Prozess läuft während des Downloads weiter und belastet den Server unnötig. Falls die Zieldatei auf einem anderen Server liegt, wird der dreifache Traffic verursacht (einmal auf dem Server mit der Datei und zweimal auf dem mit dem PHP-Script). Außerdem müssten Features wie abgebrochene Downloads fortsetzen, manuell in PHP nachgebaut werden.
Fazit: Speziallösung, falls man trotz Möglichkeit A hartnäckige Probleme mit direkten Verlinkungen auf die Downloaddateien hat.

Zuletzt bearbeitet: 20.01.2017 20:08 von • Der Artikel wurde 11820 mal angeschaut.