Letzer Zugriff am
10 März 2010 um 15:14 Uhr
Kommentare
Beitrag kommentieren
26 Dez. 2009
Das Samsung N510 unter Unbun...
02 Dez. 2009
PHP Download counter Script...
15 Okt. 2009
Alternative DNS-Server - St...
06 Sep. 2009
Ausgestanzte Titel und Objek...
19 Jul. 2009
» 73932 mal
2. Briefvorlagen nach DIN fü...
» 31217 mal
3. DVD::RIP - Das Schweizer ...
» 11276 mal
4. Achtung: Spielen gefährde...
» 10622 mal
5. Die Developer Toolbar: Ei...
» 10359 mal
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 = 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.
0 Kommentar(e)
Keine Kommentare bis jetzt.Beitrag kommentieren
Ich freue mich jederzeit über Fragen, Anmerkungen und Kritik. Also gebt euch einen Ruck und kommentiert diesen Artikel.
zur Übersicht



