Wie ein einmal Downloadlink erstellen?

...komplette Frage anzeigen

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du kannst einen Link nach dem Muster

www.deineseite.de/downloads/Vot6QkADaa/

erstellen. Wie du das genau machst hängt von der Programmiersprache ab die du nutzt. Grundsätzlich würde man das über das Apache Modul mod_rewrite machen, damit kannst du URLS nach dem obigen Muster z.B. auf eine bestimmte PHP Seite verweisen. Die PHP Datei könnte dann obigen String z.B. in einer Variable $code haben und dann in der Datenbank die richtige Datei finde.

Du solltest deine geschützten Dateien gar nicht in einem Ordner haben, der öffentlich zugänglich ist. Stattdessen solltest du die Dateien z.B. über eine PHP Datei welche die Datei ausliest, mit den richtigen Headern ausgeben.

Sicherzustellen, dass die Datei wirklich nur einmal heruntergeladen wird ist schwierig. Dafür müsstest du die Apache Logfiles analysieren. Aber ist es wirklich nötig? Überleg mal wenn die Datei erst heruntergeladen wurde, könnte sie vom User sowieso leicht an seine Freunde weitergeschickt werden. Du kannst aber z.B. loggen von welcher IP die Datei heruntergeladen wurde und dann nur noch Downloads von der IP zulassen. Und zusätzlich, den Link nach ein paar Minuten verfallen lassen.

Vielen Dank für die schnelle Antwort! Hat mir sehr weitergeholfen.

0
@XvieWER

Ergänzend: Wenn du den Download mit einer Serversprache (z.B. PHP) anbietest, kannst du diesen besser steuern und die Datei entsprechend Serverseitig schützen. Dann ist es nicht möglich von außen heran zu kommen.

Tipp: Wenn du einen eundeutigen code für den Download erstellst, speicher diesen ab (am besten in einer Datenbank). Das ist für 2 Sachen wichtig:

1. Du kannst nachvollziehen ob der Download bereits ausgeführt wurde oder nicht (z.B. wenn ein Käufer sich mal beschwert das er die Datei nicht runterladen konnte).

2. Du kannst nachvollziehen wie oft eine Datei runtergeladen wurde. Sowohl Global als auch nur für einen code. Das gibt dir übrigens weitere Möglichkeiten aus, z.B. pro Codes 5 Downloads zu erlauben, usw. Das kann man jetzt unendlich weiterspinnen.

0

Ich würde anstatt eines Linkes eine Variable über PHP setzen. Der Link sähe dann in etwa so aus: www.krasser-online-shop.de/download/?article=638a6f72

Im Code müsste dann überprüft werden ob der Eintrag 638a6f72 in einer Datenbank existiert, an die entsprechende Datei weiterleiten (oder einen Fehler ausgeben bei Nichtexistens) und den Eintrag anschliessend löschen.

Die Nummern (im Beispiel einfach eine hexadezimale Zahl) sollten einmalig sein und möglichst zufällig generiert (wenn ich etwas kaufe und nur 1 dazu zählen muss um den nächsten Artikel zu "erraten"...). Bei Kauf des Artikels müsste diese außerdem in die Datenbank eingetragen werden.

Bei Fragen immer raushaun.

Die Datei muss ausserhalb des öffentlichen webseiten Ordners liegen damit nicht Hinz und Kunz darauf zugreifen kann. Der download link darf / kann nicht direkt auf das file zeigen sondern zeigt auf ein Serverskript, welches  prüft ob der Benutzer die Datei downloaden darf (entsprechend hier die Zeit  bzw downloadanzahl prüfen ) . Falls ja,  gibst du ein http header mit octet-stream (mal danach googlen)  zurück das den browser veranlasst die Datei zu downloaden ansonsten ein http header mit einem forbidden 403 status code. 

Oh je, klingt nach viel Arbeit😕

0
@XvieWER

Es geht, hab dieses feature schon tausend mal in diversen frameworks implementiert, es gibt aber schlimmeres 

1

Was möchtest Du wissen?