Ergebnis 1 bis 6 von 6
-
22-12-2013, 15:20 #1j-l-n Guest
einfacher Download-Counter (Anleitung für Anfänger)
Nach dem Lesen folgenden Threads (http://forum.jswelt.de/serverseitige...d-counter.html (Download Counter)) habe ich einen möglichst einfachen Download-Counter entwickelt, der keinerlei Datenbank benötigt. Diesen möchte ich auch kurz hier vorstellen, da er sich perfekt als Tutorial eignet.
1. Schritt: leeren Ordner "statistics" und die Datei "download.php" anlegen
2. Schritt: nun bauen wir schrittweise das Skript zusammen:
-der Dateiname wird aus der URL gelesen, weiteres hierzu in Schritt 3)
PHP-Code:$filename = $_GET['id'];
PHP-Code:if (!empty($filename)){
//dieser Teil folgt jetzt
}
else {
echo"Fehler: Keine gültige Download-ID!";
}
PHP-Code:$counter = @file_get_contents("statistics/$filename.txt");
if($counter == "")
{
$counter = 0;
}
PHP-Code:$counter++;
PHP-Code:@file_put_contents("statistics/$filename.txt", $counter);
PHP-Code:header("Location: $filename");
PHP-Code:<?
/*
einfacher Download-Counter ohne Datenbank auf Textdateienbasis
----------
Autor: Julian (http://forum.jswelt.de/members/julian.html)
----------
!!!!! Dieser Vermerk darf nicht entfernt werden !!!!!
*/
$filename = $_GET['id']; // holt sich den Dateinamen aus der URL
if (!empty($filename)){
//wenn noch keine Statistik angelegt, Zähler bei 0 beginnen
$counter = @file_get_contents("statistics/$filename.txt");
if($counter == "")
{
$counter = 0;
}
//bei jedem Download Zähler um 1 erhöhen
$counter++;
//Downloadanzahl in Textdatei schreiben mit Namen "Dateiname".txt
@file_put_contents("statistics/$filename.txt", $counter);
//zum angeforderten Datei-Download weiterleiten
header("Location: $filename");
}
else { //wenn in der URL kein Dateiname angegeben, Fehlermeldung anzeigen
echo"Fehler: Keine gültige Download-ID!";
}
?>
Jeder Link zu einem Download muss nun nach diesem Schema umgeleitet werden:download.php?id={Dateiname des Downloads}
HTML-Code:<a href="download.php?id=bilder.zip">Zum Download</a>
Fertig! Im Ordner "statistics" kannst du nun nachsehen, wie oft die Dateien heruntergeladen wurden. Der Dateiname der richtigen Datei ist
{Name des Downloads}.txt
Bitte teilt mir euere Meinung und Verbesserungsvorschläge mit!Geändert von j-l-n (15-01-2014 um 21:48 Uhr) Grund: Umsetzung eines Vorschlags
-
23-12-2013, 13:55 #2rico2009 Guest
AW: einfacher Download-Counter (Anleitung für Anfänger)
Hi,
ich habs jetzt zwar nur überfolgen, aber ansich ganz gut. Ich hätte 2 Anmerkungen/Verbesserungsvorschläge:
1. Anstelle von $variable != "", könnte man auch die empty() Funktion verwenden (PHP: empty - Manual)
2. $_GET['id'] sollte eventuell escaped werden. (Auch wenn keine DB Aktionen erfolgen, aber es sind Get-Parameter und sie kommen aus dem bösen INet...)
Gruß
-
23-12-2013, 15:23 #3j-l-n Guest
AW: einfacher Download-Counter (Anleitung für Anfänger)
Danke, den Tipp, empty() zu verwenden, habe ich gleich umgesetzt
Meiner Meinung nach besteht aber bei diesem Projekt keinerlei Notwendigkeit, $_GET zu escapen. Kann mir nicht vorstellen, was da passieren sollte.
-
23-12-2013, 17:27 #4rico2009 Guest
AW: einfacher Download-Counter (Anleitung für Anfänger)
Ich denke auch nicht, dass irgendwas passieren könnte. Ich bin mittlerweile nur dazu übergegangen alles was ein "fremder" Benutzer eingibt oder eingeben kann zu escapen.
Wenn ich so drüber nachdenke, könnte es doch eine Schwachstelle geben. Der filename wird auch ans header(location) weitergegeben. Wenn dort nun einer JS eingibt und einem Benutzer unterschläußt, könnte! es z.B. massenhaft PopUp Fenster geben oder ähnliches. Ich bin jetzt kein Experte im Hacken, aber vielleicht, ach keine Ahnung. Ich würde escapen, sicher ist sicher. :-)
-
23-12-2013, 19:30 #5
AW: einfacher Download-Counter (Anleitung für Anfänger)
Ich sehe nur ein Problem, wenn in $_GET["id"] sowas wie "../../wichtige" drin steht. Dann wird die Datei "../../wichtige.txt" überschrieben - falls es so eine gibt.
Generell muss man sich Gedanken über Ordnerstrukturen machen.
-
23-12-2013, 21:05 #6j-l-n Guest
AW: einfacher Download-Counter (Anleitung für Anfänger)
Stimmt, das hab ich nicht bedacht...
Ähnliche Themen
-
[FRAGE] Download Counter
Von gatomio im Forum Serverseitige ProgrammierungAntworten: 15Letzter Beitrag: 02-01-2014, 17:45 -
Frage zu einem Download Counter ...
Von Hamlet im Forum Serverseitige ProgrammierungAntworten: 1Letzter Beitrag: 01-09-2005, 09:37 -
Do-It-Yourself - Yamaha Bike im Eigenbau - Anleitung zum Download...
Von Albu im Forum FunAntworten: 4Letzter Beitrag: 20-12-2003, 23:43 -
Counter für PHP anfänger
Von ELMX im Forum Serverseitige ProgrammierungAntworten: 2Letzter Beitrag: 05-12-2002, 16:25 -
grafischen Counter in textbasierten Daily-Counter umschreiben....
Von Metallica im Forum Serverseitige ProgrammierungAntworten: 13Letzter Beitrag: 05-07-2001, 18:44
Lesezeichen