URL: https://www.overclockers.at/coding-stuff/datei_download_begrenzen_153722/page_1 - zur Vollversion wechseln!
hab ein problem: ich möchte eine datei sharen aber leider hab ich nicht ganz so viel freitraffic und da ich da schonmal eine unangenehme erfahrung mit >50 euro nachzahlung hatte:
ich brauche ein script, welches für eine datei nur eine bestimmte anzahl downloads zulässt (die ich für jede datei einzelnen angeben können will)
vorhanden: php 4.x (ka welche) mysql & keine ahnung meinerseits
Pro Tag begrenzen? Pro Monat? Einmalig? Ich würd die Dateien in einem via HTTP nicht zugänglichen Ordner ablegen, Die Anzahl der maximalen sowie tatsächlichen Downloads würd ich in eine SQL-Datenbank schreiben.
Die Downloads funktionieren dann so, daß der User ein php-File öffnet, das das gewünschte File weiterreicht und gleichzeitig den Counter erhöht. Und wenn #Downloads >= MaxDownloads dann halt leider nicht...
pro monat sollte es begrenzt werden, oder auch einmalig z.b. 50x downloadbar.
da wärs doch besser von jedem file immer zu checken obs noch in einem gesetzten Limit ausgeht und wenn nicht error-message display'n
Zitat von watchoutda wärs doch besser von jedem file immer zu checken obs noch in einem gesetzten Limit ausgeht und wenn nicht error-message display'n
Code: PHP<?php // Übergebenen Parameter, id der Datei, lesen: $fileid = $_POST["fileid"]; // Zur Datenbank verbinden: $db = mysql_connect("localhost", "user", "password"); mysql_select_db("datenbank",$db); // Datenbank abfragen $result = mysql_query("SELECT filepath, max_downloads, count_downloads, content_type FROM file_limit_table WHERE id=$fileid;",$db); $row = mysql_fetch_row($result); // Wenn count_downloads >= max_downloads dann ... if ($row[2] >= $row[1]) { // ... weiterleiten an eine Seite mit Fehlermeldung, daß Limit überschritten wurde header("location: 'http://.../limit_exceeded.html'"); } else { // sonst: Counter um 1 erhöhen $counter = $row[2] + 1; // und neuen Wert in die Datenbank schreiben. $result = mysql_query("UPDATE file_limit_table SET count_downloads=$counter WHERE id=$fileid;", $db); // HTTP Content-Type setzen (sollte in der Datenbank stehen) header("Content-type: $row[3]"); // Datei lesen und via HTTP ausgeben readfile($row[0]); } ?>
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025