Frage von XvieWER, 219

Wie ein einmal Downloadlink erstellen?

Hallo zusammen! Ich möchte für die Webseite unserer Band einen Shop erstellen, bei dem man wie gewohnt ein Artikel in den Warenkorb legt und kauft. Nur soll es dann so sein, dass man nach dem Kauf automatisch einen Digitalen Download von den Liedern, die man gekauft hat, erhält. Der Link sollte dann natürlich auch nur einmal gültig sein, da man den Link ja sonst teilen könnte und einfach alle diese Lieder immer herunterladeb könnte. Wie stelle ich es also am Besten an, dass ein zufälliger Link generiert wird, der nur einmal gültig ist und man nicht erkennt wo die datei im Server Verzeichnis liegt?

Danke im Voraus auch an Denkansätze :)

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von MonkeyKing, 168

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.

Kommentar von XvieWER ,

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

Kommentar von Malemeister ,

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.

Antwort
von 3v1lH4x0R, 140

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.

Antwort
von kingbongo, 98

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. 

Kommentar von XvieWER ,

Oh je, klingt nach viel Arbeit😕

Kommentar von kingbongo ,

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

Kommentar von waswesich ,

...ja, CLASSEN :-(

Antwort
von EightSix, 114

Und die Datei können die nicht weiter verteilen? Und was machst du, wenn der Download des Kunden plötzlich abbricht?

Kommentar von kingbongo ,

Es lässt sich prüfen ob alle bytes aus dem stream an den client gesendet wurden. Falls nicht alles gesendet wurde, sollte man dem Client die Möglichkeit geben es noch mal downloaden zu dürfen. Rein technisch alles kein problem. 

Kommentar von XvieWER ,

Der Kunde würde mir eine E-Mail schicken und ich würde ihm dann einen zweuten versuch zusenden

Antwort
von mike230, 108

Nutzt du Wordpress? Wenn ja kann ich Easy Digital Downloads empfehlen. 

Jedoch ist es nicht gerade sinnvoll einen eigenen Shop zu erstellen da AGB's vorhanden sein müssen und der Datenschutz der Kunden gewährleistet werden muss. Dies ist meistens bei privaten Seiten nicht ausreichend gewährleistet.

Empfehlen würde ich dir die Musik bei Amazon anzubieten und von deiner Seite auf amazon zu verlinken oder das Produkt(den Song) einzubinden.

Kommentar von XvieWER ,

Nein ich butze kein WP

Kommentar von XvieWER ,

*benutze

Antwort
von kwq2145, 87

Kann man das nicht mit Woocommerce machen? Ich hatte das selbst noch nie, aber ein paar Bekannte nutzen dass immer für solche Dinge


Antwort
von Berny96, 72

www.myFlashstore.net ist das wonach du suchst :)

Keine passende Antwort gefunden?

Fragen Sie die Community