J
j-l-n
Guest
Nach dem Lesen folgenden Threads (http://forum.jswelt.de/serverseitige-programmierung/58635-download-counter.html) 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)
-nur wenn dieser Dateiname auch angegeben ist, wird das Skript weiter ausgeführt, ansonsten gibt es eine Fehlermeldung aus:
-nun wird die Statistikdatei (mehr dazu unten) geöffnet; falls sie noch nicht existiert, beginnt das Skript bei 0 zu zählen
-wird die download.php aufgerufen, wird der Zähler bei jedesmal um 1 erhöht
-zum Schluss speichern wir die neue Downloadzahl noch
-...und leiten zum eigentlichen Download weiter:
Das war der letzte Teil diesen Schritts! Hier noch einmal der gesamte Code:
Fahren wir mit dem 3. und letzten Schritt fort:
Jeder Link zu einem Download muss nun nach diesem Schema umgeleitet werden:
Fertig! Im Ordner "statistics" kannst du nun nachsehen, wie oft die Dateien heruntergeladen wurden. Der Dateiname der richtigen Datei ist
Bitte teilt mir euere Meinung und Verbesserungsvorschläge mit!
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:
$filename = $_GET['id'];
-nur wenn dieser Dateiname auch angegeben ist, wird das Skript weiter ausgeführt, ansonsten gibt es eine Fehlermeldung aus:
PHP:
if (!empty($filename)){
//dieser Teil folgt jetzt
}
else {
echo"Fehler: Keine gültige Download-ID!";
}
-nun wird die Statistikdatei (mehr dazu unten) geöffnet; falls sie noch nicht existiert, beginnt das Skript bei 0 zu zählen
PHP:
$counter = @file_get_contents("statistics/$filename.txt");
if($counter == "")
{
$counter = 0;
}
-wird die download.php aufgerufen, wird der Zähler bei jedesmal um 1 erhöht
PHP:
$counter++;
-zum Schluss speichern wir die neue Downloadzahl noch
PHP:
@file_put_contents("statistics/$filename.txt", $counter);
-...und leiten zum eigentlichen Download weiter:
PHP:
header("Location: $filename");
Das war der letzte Teil diesen Schritts! Hier noch einmal der gesamte Code:
PHP:
<?
/*
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!";
}
?>
Fahren wir mit dem 3. und letzten Schritt fort:
Jeder Link zu einem Download muss nun nach diesem Schema umgeleitet werden:
Heißt die Datei z.B. bilder.zip, muss der Link folgendermaßen lauten:download.php?id={Dateiname des Downloads}
HTML:
<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
Willst du z.B. wissen, wie viele Personen sich die bilder.zip abgerufen haben, öffne "bilder.zip.txt".{Name des Downloads}.txt
Bitte teilt mir euere Meinung und Verbesserungsvorschläge mit!
Zuletzt bearbeitet: