2012-03-24 6 views
3

Wenn ich Elemente in einer Datenbank gespeichert habe, die Benutzer nach dem Kauf herunterladen können, wie kann ich einen Link bereitstellen, der für jeden Benutzer unterschiedlich ist?Erstellen Sie einen personalisierten Download-Link

Ich dachte, wäre die richtige Sache zu tun: Geben Sie ihnen einen Link, der auf irgendeine Weise basierend auf ihrer Benutzer-ID zum Beispiel Hashed ist. Dann, wenn ich den Link, den ich ihnen habe ich nur umgekehrt den Hash Funktion, um den ursprünglichen Link zu erhalten. Ist das der richtige Weg, Dinge zu tun?

Wenn dies nicht der richtige Ansatz ist, könnte mir bitte jemand in die richtige Richtung zeigen?

+1

wird es temporäre Verbindung sein? – safarov

+0

keine dauerhafte Verbindung – Biscuit128

Antwort

1

Hash-Funktionen sind nicht zur Umkehrung vorgesehen. Ich würde vorschlagen, über lighttpd zu lesen mod_secdownload Implementierung

Es gibt Ihnen eine geschützte Verbindung, gültig für eine bestimmte Zeit. Da ein Hash nicht rückgängig gemacht werden kann, müssen Sie einen Hash Ihrer Informationen zusammen mit den Klartextinformationen (wenn möglich) in dem Link übergeben. Ex:

http://somesite.com/download.php?hash=<md5($secretkey.$userId.$documentId)>&usrId=<$userId>&documentId=<$documentId> 

Wenn Sie erhalten eine Anfrage zum Download, Prozess der hat, vergleicht sie mit den gegebenen, wenn es gleich ist, dann betrachten Sie es überprüft.

0

Sie sollten in Ihrer Datenbank etwas wie "download tokens" speichern. Wenn ein Benutzer etwas herunterladen möchte, erstellt man ein neues Token (zum Beispiel eine Zufallszahl), und wenn mehrere Dinge heruntergeladen werden sollen, kann man sie beispielsweise mit ihrer ID an sie binden.

In der URL senden Sie einfach das Token als eine GET-Variable. Sobald der Benutzer den Inhalt heruntergeladen hat, löschen Sie das Token aus der Datenbank.

Verwandte Themen