Texte, Projekte und Fundsachen rund um Medien, Bildung und Computer
www.dirk-hoeschen.de
PHP Download counter Script
Erstellt am: 15 Okt. 2009

Manchmal will man einfach nur zählen, wie oft ein Programm oder ein Archiv heruntergeladen wird. Häufig will man auch verhindern, dass ein direkter Download von einer fremden Seite möglich ist. Ein erstaunlich kurzes Script schafft Abhilfe.

Das PHP Script

<?php
/*
 * Downloadcounter Kontrollscript
*/
$path="./downloads/";
// hole dateinamen aus variable f
$filename = strip_tags($_GET['f']);
if ($filename!="") {
    // ganzes verzeichnis lesen
    $dir_handle = @opendir($path) or die("Unable to open ".$path);
    while ($file = readdir($dir_handle)) {
        if (!is_dir($file)) {
            if ($file==$filename) {
                rename($path.$file,$path."0:0:".$file);
                $file = "0:0:".$file;
            }
             // datei in array splitten
            $fparts = preg_split('/:/',$file);
           if ((count($fparts)>1) && ($fparts[2]==$filename)) {
                  // counter erhönen, neuen zufallswert ermitteln und datei umbenenenn
                $dlcount = intval($fparts[0])+1;
                $frandom = hash("md5",microtime());
                $newfilename=$dlcount.":".$frandom.":".$filename;
                rename($path.$file,$path.$newfilename);
                break;
           }
        }       
    }

    // datei mit dem ursprünglichen namen ausgeben
    if ($newfilename!="") {
        header('Content-type: application/zip');
        header('Content-Disposition: attachment; filename="'.$filename.'"');
        header("Content-Transfer-Encoding: binary");
        readfile($path.$newfilename);
    }

}

?>

 Wie funktioniert es?

Dem Downloadscript wird über die Variable "f" der gewünschte Dateiname übermittelt. Das Script sucht nun im Unterordner "downloads" nach der Datei. Die Datei ist nach folgendem Muster gespeichert: ZÄHLER:HASH:DATEINAME.

Die Teile zwischen dem ":" werden aufgesplittet. Der Zähler wird um eins erhöht, ein neuer hashwert genriert und die Datei umbenannt.

Dadurch ist ein Download der Datei nur über das Script möglich. Zusätzlich kann man über den Dateinamen ermitteln, wie oft die Datei heruntergeladen wurde.

Zugriffsbeschränkung

Bis jetzt funktioniert unser Script nur als Zähler. Außerdem verhindert es den direkten Download.

Wenn das Script in einem passwortgeschützten Bereich liegt oder über die Sessionvariable auswertet, ob ein Benutzer angemeldet ist, kann es leicht dazu dienen, dass ein Download nur nach einer vorherigen Benutzeranmeldung möglich ist.

Artikel Bookmarken bei...
Mister-Wong Webnews Yigg Alltagz Infopirat Delicious Furl Linkarena Yahoo Google

4 Kommentar(e)

DaddyChronic schrieb am 29 Jan. 2011 um 18:31 Uhr Bild...
DaddyChronic vom tonarchiv aus Berlin sagt auch Danke.
Simanjuntak schrieb am 19 Jan. 2011 um 06:14 Uhr
Servous,

Sehr gut, vielen danke fuer das script. i kann probiert mit mein sites.

tchuss..
-mbs
RyouArashi schrieb am 23 Sep. 2010 um 12:02 Uhr Bild...
Sehr schönes, einfaches Skript. Mit ein paar kleinen Ergänzungen ab sofort auf meinem Blog im Einsatz.
--RyouArashi
Zunkel schrieb am 10 Jul. 2010 um 20:02 Uhr Bild...
Moin,
wollt mal Danke für das hübsche kleine Scriptlein sagen, funktioniert ja wirklich wunderbar, nice and easy :)

Gruß, Zunkel

Beitrag kommentieren

Ich freue mich jederzeit über Fragen, Anmerkungen und Kritik. Also gebt euch einen Ruck und kommentiert diesen Artikel.

Name
eMail optional für Antworten: wird nicht veröffentlicht!
Webseite optional
Kommentar
Kontrollcode
Spamvermeidung: bitte den Code im Bild eingeben
 

* zur Übersicht

Aktuelle Projekte

MBE Druckprofis Immoblienmakler Berlin - Hauptstadtmakler Lehranstalt fuer Gartenbau und Floristik Gro�beeren Kunstleihhaus computer-daten-netze : feenders.de