Dateien Counter
Dieses Beispiel zeigt wie man sich ein einfaches Download-Script basteln kann.
Der jeweilige Download-Link soll hierbei nicht direkt auf die Datei gehen,
sondern auf eine PHP-Datei.
Der Kern ist hier nicht die Anbindung an die MySQL-Datenbank, sondern die Möglichkeit
mit header()-Funktionen ein Download-Script komfortabel zu machen.
QUELLCODE
Zuerst benötigen wir eine MySQL-Tabelle mit den nötigen Informationen über
die Downloads:
CREATE TABLE downloads (
id int(4) NOT NULL auto_increment,
downloads int(5) NOT NULL default '0',
url text NOT NULL,
PRIMARY KEY (id)
)
Danach lassen sich die Downloads ebenfalls über PHPMyAdmin eingeben
(Registerkarte "Einfügen"), auf das Programmieren eines
Admin-Bereichs verzichte ich an dieser Stelle.
Bei "id" und "downloads" muss nichts eingegeben werden,
lediglich die Adresse zur Datei (z.B. http://www.server.de/file.zip) bei "url".
Jetzt fehlt uns noch die PHP-Datei auf die gelinkt werden soll. Um es möglichst
professionell wirken zu lassen, verzichtet die Datei auf eine visuelle Ausgabe.
Was das bedeutet, sehr ihr wenn ihr z.B. einen von meinem Scripten hier
runterladet.
Die Datei sollte ungefähr so aussehen:
<?php
mysql_connect("SERVER", "USERNAME", "PASSWORT");
mysql_select_db("DB");
$my_download =
mysql_fetch_array(
mysql_query("select * from X where
id='$_GET[id]'"));
$downloads =
$my_download[downloads]+1;
mysql_query("update X SET downloads='$downloads'
where id='$_GET[id]'");
$save_as_name = basename($my_download[url]);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment;
filename=\"$save_as_name\"");
header("Pragma: no-cache");
header("Expires: 0");
header("Content-Length:
".filesize($my_download[url]));
readfile($my_download[url]);
?>
Als erstes müssen natürlich die ersten zwei Zeilen editiert und die richten
MySQL Daten eingetragen werden. Ebenfalls muss man die beiden SQL-Anfragen ändern,
anstatt "X" muss hier der Tabellenname eingetragen werden.
Wenn man nun einen Download starten möchte (z.B. den, der die ID 2 hat) muss
man die Datei so aufrufen: "download.php?id=2".
Wenn man einen Link darauf setzt, sollte man das target-Attribut nicht so wählen,
dass es ein neues Fenster öffnet, sondern dass der Link im gleichen Fenster geöffnet
wird (target=... im Link einfach weglassen).
Die Anzahl der Downloads lässt sich folgendermaßen auslesen:
<?php
$num_downloads = mysql_result(
mysql_query("select downloads from X
where id=\"2\""),0);
print("$num_downloads);
?>
Auch hier muss wieder das "X" durch den Tabellennamen ersetzt werden.
Außerdem wird hier die id=2 ausgelesen, lässt sich natürlich (fast) beliebig
verändern (die ID muss vorhanden sein).
|