Tutorial: Kleiner Downloadcounter

28. Dezember 2007 – 21:11

Mit dem in dieser Anleitung gezeigten Methode ist es einfach, Downloads zu zählen. Es bietet keinerlei Administration was auch nicht nötig ist, da es wirklich sehr sehr simpel ist. ;)

Zuerst die Überlegung: Wie zählt man Klicks? Eine simple Lösung habe ich schon einmal vorgestellt. Meine jetzige Lösung legt für jeden Download eine eigene Zählerdatei neben der Datei an, die heruntergeladen werden soll. Natürlich könnte man mit Hilfe einer Datenbank das Skript unendlich ausbauen in Aspekten wie Analyse und Tracking, ich begnüge mich aber mit reinen Zahlen. ;)

Zuerst einmal die Struktur:
Wir benötigen zwei Verzeichnisse: eines in welchem die Dateien liegen und eines, in dem das Skript liegt. Aber wieso zwei? Ganz einfach: Das Skript zählt einen Download und sendet dann den Client an die eigentliche Datei weiter. Das Skript ist also nicht wirklich geeignet, um Hotlinking zu verhindern.

In den Ordner dateien (kann natürlich auch anders lauten) legen wir nun die Dateien, die heruntergeladen werden sollen. In den Ordner download (kann natürlich auch anders lauten) die .htaccess und die dl.php.

.htaccess

RewriteEngine On
RewriteRule ^(.*)$ dl.php?file=$1 [L]

dl.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// Name des Verzeichnisses der Dateien
$path = 'dateien';
 
// Ab hier nichts mehr ändern
$path = '../'.$path.'/';
if ( !isset($_GET['file']) ) exit;
 
$file = $_GET['file'];
 
if ( empty($_GET['file']) || !file_exists($path.$file) )
{
	die('Datei nicht gefunden!');
}
 
// Gegen Hacking
if ( strpos($file, '..') !== false ) die('Invalid file');
 
// Zähl es!
$countfile = $path . $file . '.txt';
 
if ( !file_exists($countfile) )
{
	// Datei erstellen und mit 1 füllen
	touch($countfile);
	file_put_contents($countfile, '1');
}
else
{
	// Datei auslesen, um eins erhöhen und wieder abspeichern
	file_put_contents($countfile, file_get_contents($countfile) + 1);
}
 
// Weiterleiten zur eigentlichen Datei
header("Location: {$path}{$file}");

Vorteile der Methode mit .htaccess gegenüber der ohne:
Gäste sehen nicht, dass der Download gezählt wird und es sieht auch besser aus. ;)

  1. 2 Kommentare zu “Tutorial: Kleiner Downloadcounter”

  2. Bei mir funktioniert das leider nicht!

    geschrieben von @Flo am 28. Dez, 2007

  3. Und wieso? Ich kann nicht hellsehen ;)

    geschrieben von Michael am 28. Dez, 2007

Kommentar schreiben