Ich möchte ein paar einzigartige Download-Links für meine Nutzer erstellen. Der Grund ist, dass ich sie nur einmal herunterladen lassen wollte, damit sie den gleichen Link wieder zum Download verwenden können.
Ich habe ein paar der Schlüssel generiert (Beispiel, qwertyasdfghzxcbn. Wie in der Download-Link wird wie www.xxxxx.com/download.php?qwertyasdfghzxcbn) in der Datenbank und Flag-Feld, wo, wenn der Benutzer heruntergeladen, es aktualisiert 1 im Flag-Feld.
Ich habe im Internet gesucht und das gefunden. Ссылка
Aber das funktioniert nur, wenn Sie zuerst auf die Seite gehen, dann generiert nur die Seite den eindeutigen Link. Ich habe den Link bereits in meiner Datenbank vorgeneriert, ich brauche ihn nicht neu zu generieren. Wenn ich den Schlüssel erzeuge, wenn Benutzer die Seite aufrufen, können sie mehrere Male herunterladen, indem sie die Seite aktualisieren.
>Die Lösung wäre, den Link selbst zum PHP-Skript zu machen.
Sie würden die eigentliche Datei irgendwo verstecken, wo sie vom Browser nicht erreichbar ist (dh irgendwo, wo Sie die Datei über fopen()
erreichen können, aber nicht im Dokumentenstamm), und eine download.php-Datei zum Herunterladen von Dateien verwenden .
Das Download-Skript selbst würde etwa so aussehen:
%Vor% Jeder Link, auf den Sie zeigen, zeigt einfach auf download.php? fileid = 712984 (was auch immer die Dateiid ist). Das wäre der eigentliche Download-Link, da das Skript die Datei überträgt; aber nur wenn der Benutzer es abrufen darf. Sie müssten die Funktionen file_location()
, check_permissions_for()
und mark_downloaded()
jedoch selbst schreiben.
Ich weiß, dass diese Frage ein bisschen alt wird, also entschuldige mich jetzt dafür, aber wenn Sie mit einer API arbeiten können, habe ich Ссылка es ist eine einfache Möglichkeit, Single-Use Download Links zu generieren. Da es sich um eine JSON-API handelt, kann es mit jeder Sprache arbeiten, aber ich biete auch eine einfache PHP-Bibliothek für die Interaktion mit der API.
Ich würde vorschlagen, uniqid () -Funktion zu verwenden und eindeutige IDs mit dem Ablaufdatum in einer Datenbank zu speichern, während Sie mit der folgenden Benutzer-URL zurückkehren: ...? file_id = $ id
Wenn der Link geöffnet wird, können Sie ihn aus der Datenbank löschen oder als "bald" löschen markieren (nur für den Fall, dass der Benutzer die Seite aktualisieren möchte.)