Download-Datei mit php-script, auf Zeit
Diese Frage über das downloaden von Dateien vom server mit der Skriptsprache php. Wenn der Benutzer klickt auf download-link, es verarbeitet zu download.php
- Datei, und verwenden header
es begann herunterladen.
Nach dem Download der Datei gibt es eine Funktion in download.php
- Datei, die updates der mysql-Datenbank über Datei heruntergeladen und zieht Geld vom Konto des Benutzers. Alles funktioniert einwandfrei.
Nun, das problem tritt auf, wenn Benutzer download-manager installiert im pc. Manchmal download gestartet im browser und download-manager. So, am Ende sind es zwei download-Einträge in der Datenbank, Und das Geld abgezogen vom Konto des Benutzers zwei mal.
Frage : gibt es eine Möglichkeit zu starten nur ein download zur Zeit? Oder ein anderer Weg, dies zu tun?
Download-link, den ich zur Verfügung stellen Benutzer.
<a href='download.php?id=1'>Download Test Video</a>
Das Skript, das ich benutze für das herunterladen der Datei. (download.php)
$file = "c:/test.avi"; //$file = $_GET['id'];
$title = "Test Video";
header("Pragma: public");
header('Content-disposition: attachment; filename='.$title);
header("Content-type: ".mime_content_type($file));
header("Content-Length: " . filesize($file) ."; ");
header('Content-Transfer-Encoding: binary');
ob_clean();
flush();
$chunksize = 1 * (1024 * 1024); //how many bytes per chunk
if (filesize($file) > $chunksize) {
$handle = fopen($file, 'rb');
$buffer = '';
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
echo $buffer;
ob_flush();
flush();
}
fclose($handle);
} else {
readfile($file);
}
record_download('user id', 'file id');
Sind Sie aufladen per download auf ein video? Ihr besser dran mit einem pay-per-view und Betten Sie ihn auf Ihrer Webseite sind Sie nicht? Wenn Sie den Ladevorgang für die gesamte video -, gerade lassen den Kunden "kaufen" ein video, und dann laden Sie es so oft wie Sie möchten (oder setzen Sie eine Begrenzung auf diese)
Auch nicht sicher, wie würden Sie diese Einrichtung für Ihre Benutzer, aber ich vor kurzem abgeschlossen ähnliches. Wenn Sie gehen, um dies zu downloaden, eine eigene URL angezeigt wird (download/<token>), die Sie verwenden. Wenn Sie versucht, um diesen wieder das Vorherige token verwendet werden. Natürlich funktioniert dies nur, wenn eine aktive Sitzung vorhanden ist.
Es gibt nicht nur videos, Software, mp3s, Bilder und vieles mehr. Nach dem Klick auf den kaufen-button, der den download startet. Aber nach, dass ich nicht wollen, dass Benutzer den download der Datei wieder. Diese Website ist nicht für die Verwendung auf internet, ich benutze es auf lokale lan-server (Intranet).
Ich habe Punkt auf, wie dies zu tun. Bitte beschreiben Sie diese kurz als Antwort.
InformationsquelleAutor user1995997 | 2013-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verschieben der Kommentar hier unten für alle interessierten.
Die Funktion, dass ich kommen musste, war eine einzigartige download-link, nachdem Zahlung verarbeitet worden. Dies sind die Schritte, die getroffen wurden.
sha1(microtime().$transactionid)
, und speichern Sie diese auf der Datenbank (Hinweis: bitte verwenden Sie nicht microtime() in der Produktion, verwenden Sie eine zufällige Zeichenfolge-generator).Mit
.htaccess
generierten wir einen download-link, z.B.:http://domain.com/download/<token>
.htaccess Inhalt:download_downloaded INT(1) DEFAULT 0
wo, wenn es auf 1 gesetzt ist, dann wird es heruntergeladen wurde. Ich würde vorschlagen, dass der Benutzer etwa einen Tag vor dem verriegeln Sie Sie heraus nach dem Download, nur für den Fall, Ihre Datei war beschädigt in den Prozess.download.php
Wenn ein Benutzer verloren Ihren download-link (wie es oft passiert), wir zeigen Ihre download-link auf die Startseite sobald Sie sich angemeldet haben, und Sie können starten Sie den Download erneut (wenn Sie es zulassen).
Ich hoffe, das hilft. Tut mir Leid, dass ich kann ' T geben einige code-Beispiele in dieser Zeit.
Meisten von diesem ist nur das Abfragen der Datenbank.
InformationsquelleAutor Dave
Irgendwann in unsere website , benötigen einen download-link. Wenn Sie auf diesen link klicken, dann jede Art von Datei,Bild, pdf-download.Sie können dies tun, mit einem einfachen php-Skript.
möchten, laden Sie eine Bild-name "shafiq_photo.jpg" so-parameter ist der Dateiname "shafiq_photo.jpg".
Dann Erstellen Sie eine php-Datei name "download.php" die Verwendung in der oben angegebenen Datei.
InformationsquelleAutor Shafiqul Islam
Ich würde empfehlen, zu verändern die Logik:
Aber es ist ein Sicherheitsloch!
Wenn zwei Menschen download starten Sie diese Datei mit diesem link, dann kann man Sie umgehen die Zahlung für einen.
Aber was ist, wenn jemand herunterladen, die Datei und senden Sie Sie an andere. So, das ist nicht so viel problem. ist es nicht?
Aber es ist eine option anfügen CSRF-token, wenn Sie denken, dass Sie sollte wirklich sicher.
InformationsquelleAutor