Dieser Download-Counter protokolliert welche Datei wie oft auf der Website heruntergeladen wird, mit IP-Sperre.
Es können alle Dateitypen (wie z.B.: Zip-Archive, Bilder, PDF-Dateien, HTML und Textdateien) gezählt werden.

Folgende Dateien werden benötigt, eine Auflistung mit einer kurzen Erklärung dazu:
• Verbindung zum Datenbankserver
Quelltext: „
verbindung.php”
Quelltext anzeigen
1 2 3 4 5 6 7 8 9 10 11 |
<?php // Verbindung zum Datenbankserver mysql_connect( "", // Host "root", // User "" // Passwort ) or die("Keine Verbindung zum Datenbankserver!");
// Der Name der Datenbank (hier "test") muss angegeben werden! mysql_select_db("test") or die("Die Datenbank ist momentan nicht erreichbar!"); ?>
|
Weitere Informationen dazu finden Sie unter:
»
Erster Eintrag in eine MySQL-Datenbank.
• Installation
Die Datei „installation.php” erstellt zwei MySQL-Tabellen (`
download_ip` und
`
download_stats`).
Quelltext: „
installation.php”
Quelltext anzeigen
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 |
<?php /* MySQL Download-Counter - Installation - Version vom 14.07.2010 - Homepage-Total.de */
include("verbindung.php");
$sql = "CREATE TABLE `download_ip` ( `ip` VARCHAR( 24 ) NOT NULL PRIMARY KEY , `zeit` INT NOT NULL , `id` INT NOT NULL ) ENGINE = MYISAM ; "; if (mysql_query($sql)) { echo "<p>Tabelle `download_ip` wurde erstellt.</p>"; }
$sql = "CREATE TABLE `download_stats` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `url` VARCHAR( 50 ) NOT NULL , `beschreibung` TEXT NOT NULL , `hits` INT NOT NULL ) ENGINE = MYISAM ; "; if (mysql_query($sql)) { echo "<p>Tabelle `download_stats` wurde erstellt.</p>"; echo "<p>» <a href='upload_editor.php'>Upload Editor</a></p>"; } ?>
|
• Upload Editor
Mit dem
Upload Editor (Datei „upload_editor.php”) können Sie Dateien auf Ihren Webserver hochladen, diese werden
dann automatisch in die Datenbank eingetragen. Oder Sie können eingetragene Dateien auch wieder löschen — mit Passwortschutz.
Quelltext: „
upload_editor.php”
Quelltext anzeigen
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>MySQL Download-Counter - Upload Editor</title>
<style type="text/css"> body { font-family: Verdana, Arial, Sans-Serif; font-size: 0.90em; }
p { color: #0000DD; }
p.fehler { color: #DD0000; } </style>
</head> <body>
<form method="post" action="upload_editor.php" enctype="multipart/form-data">
<fieldset> <legend><strong>MySQL Download-Counter - Upload Editor</strong></legend>
<?php /* MySQL Download-Counter - Editor - Version vom 14.07.2010 - Homepage-Total.de */
// Passwort $passwort = "user";
include("verbindung.php");
if ($_SERVER['REQUEST_METHOD'] == "POST") { if ($_POST["passwort"] == $passwort) {
// Datei Hochladen und in die Datenbank eintragen if (isset($_POST["eintragen"])) { if (!file_exists("downloads/" . $_FILES['upload']['name'])) { if (move_uploaded_file($_FILES['upload']['tmp_name'], "downloads/" . $_FILES['upload']['name'])) { echo "<p>Die Datei „" . $_FILES['upload']['name'] . "” wurde hochgeladen<br>"; if (mysql_query("INSERT INTO `download_stats` (`id`, `url`, `beschreibung`, `hits`) VALUES ('', '" . $_FILES['upload']['name'] . "', '" . $_POST["beschreibung"] . "', '0')")) { echo "und in die Datenbank eingetragen.</p>"; } } else { echo "<p class='fehler'>Die Datei „" . $_FILES['upload']['name'] . "” konnte nicht hochgeladen werden!</p>"; } } else { echo "<p class='fehler'>Eine Datei mit dem Namen „" . $_FILES['upload']['name'] ."” befindet sich bereits auf dem Server!</p>"; } }
// Eintrag aus der Datenbank entfernen und Datei löschen if (isset($_POST["loeschen"], $_POST["del_id"])) { list($url) = mysql_fetch_row(mysql_query("SELECT `url` FROM `download_stats`WHERE `id` = '" . $_POST["del_id"] . "'")); if (mysql_query("DELETE FROM `download_stats` WHERE `id` = '" . $_POST["del_id"] . "'")) { echo "<p>Der Eintrag wurde aus der Datenbank entfernt.</p>"; if (file_exists("downloads/" . $url)) { if (unlink("downloads/" . $url)) { echo "<p>Die Datei „" . $url . "” wurde gelöscht.</p>"; } } } } } else { echo "<p class='fehler'>Falsches Passwort!</p>"; } } ?>
Passwort: <input type="password" name="passwort">
<br><br>
<fieldset> <legend><strong>Datei Hochladen und in die Datenbank eintragen</strong></legend> <br> Datei: <input type="file" name="upload" size="50"><br> Beschreibung: <small>(Optional)</small><br> <textarea rows="2" cols="40" name="beschreibung"></textarea> <input type="submit" name="eintragen" value="Datei Hochladen"> </fieldset>
<br><br>
<fieldset> <legend><strong>Eintrag aus der Datenbank entfernen und Datei löschen</strong></legend> <select name="del_id" size="1">
<?php // Datensätze auslesen und anzeigen $datensaetze = mysql_query("SELECT id, url, hits FROM `download_stats`"); while (list($id, $url, $hits) = mysql_fetch_row($datensaetze)) { echo '<option value="' . $id . '">Name: ' . $url . ' - ID: ' . $id . ' - Hits: ' . $hits . '</option>'; } ?>
</select> - <input type="submit" name="loeschen" value="Löschen"> </fieldset> </fieldset> </form>
</body> </html>
|
• Download Counter
Die Datei „download_counter.php” zählt die Downloads.
Funktionsweise: Wird ein Download gestartet, wird beim ersten aufrufen die
IP-Adresse des Besuchers, das
Datum (Timestamp) und die
ID der Datei, die heruntergeladen wird, in die Tabelle `download_ip` eingetragen.
In der Tabelle `download_stats`wird dann die Download-Anzahl (Hits) mit der entsprechenden ID erhöht.
Sollte die Ablaufzeit (siehe Quelltext) überschritten sein, so wird der Besucher mit der IP-Adresse in der Tabelle `download_ip` gelöscht.
Quelltext: „
download_counter.php”
Quelltext anzeigen
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php /* MySQL Download-Counter - Version vom 14.07.2010 - Homepage-Total.de */
include("verbindung.php");
if (isset($_GET["id"])) { $id = mysql_real_escape_string($_GET["id"]); $ip = $_SERVER["REMOTE_ADDR"];
// Alte IP-Adressen löschen $ablaufzeit = time() - 3600; // 3600 Sekunden (= 60 min.) IP Sperre! mysql_query("DELETE FROM `download_ip` WHERE `zeit` <= " . $ablaufzeit . "");
if ($datensatz = mysql_query("SELECT `id`,`url`,`hits` FROM `download_stats` WHERE `id` = '" . $id . "'")) { list($id, $url, $hits) = mysql_fetch_row($datensatz);
if (!mysql_fetch_row(mysql_query("SELECT `ip`,`zeit`,`id` FROM `download_ip` WHERE `ip` = '" . $ip . "' AND `id` = '" . $id . "'"))) {
// IP-Adresse, Timestamp und ID eintragen mysql_query("INSERT INTO `download_ip` (`ip`,`zeit`,`id`) VALUES ('" . $ip . "','" . time() . "','" . $id . "')");
// Hits erhöhen mysql_query("UPDATE `download_stats` SET `hits` = `hits` + 1 WHERE `id` = '" . $id . "'"); } // Datei Download header("Location: downloads/" . $url . ""); } }
// Download-Link anzeigen function zeigeDownloadLink_ID($id) { if ($datensatz = mysql_query("SELECT `id`,`url`,`beschreibung`,`hits` FROM `download_stats` WHERE `id` = '" . $id . "'")) { list($id, $url, $beschreibung, $hits) = mysql_fetch_row($datensatz); if (file_exists("downloads/" . $url)) { $size = filesize("downloads/" . $url); $size = ($size < 1024) ? $size . " Bytes" : (($size >= 1048576) ? number_format(($size / 1024 / 1024), 2, ",", ".") . " MB" : number_format(($size / 1024), 2, ",", ".") . " KB"); return '<a href="download_counter.php?id=' . $id . '" target="_blank">' . $url . '</a> - ' . $size . ' - Hits: ' . $hits . ($beschreibung != "" ? "<br>" . $beschreibung : ""); } else { return "Keine Datei vorhanden!"; } } else { return "ID wurde nicht gefunden!"; } } ?>
|
• Demoseite
In der Datei „demoseite.php” befindet sich (wie der Dateiname schon sagt) ein Demo.
Dieses Demo zeigt wie man den
Download-Counter auf der Webseite anzeigen lassen kann.
Quelltext: „
demoseite.php”
Quelltext anzeigen
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 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Demoseite</title>
<style type="text/css"> body { font-family: Verdana, Arial, Sans-Serif; font-size: 0.90em; } </style>
</head> <body>
<h2>Demoseite</h2>
<!-- Download Counter --> <?php include("download_counter.php"); ?>
<!-- Hier tragen Sie die ID der Datei ein. diese finden Sie im "Download Editor" in der Auswahlliste (wenn sie eine Datei hochgeladen haben!) --> <?php echo zeigeDownloadLink_ID("2"); ?>
</body> </html>
|
Demoanzeige (ohne Funktion)
archiv.zip - 19,3 KB - Hits: 22
beschreibung.pdf - 2,77 KB - Hits: 351
bild.gif - 51,1 Bytes - Hits: 123
avatar_film.mpg - 22,07 MB - Hits: 489
• Hinweise zur Installation
Führen Sie folgende Anweisungen nacheinander aus:
- Ihre Zugangsdaten (zur Datenbank) tragen Sie in der Datei „verbindung.php” ein.
- In der Datei „upload_editor.php” ändern Sie das Passwort.
- Schauen Sie in die Datei „demoseite.php”, dort befindet sich ein Demo!
- Laden Sie alle Dateien auf Ihrem Webserver hoch.
- Das Verzeichnis "downloads" benötigt Schreib.- und Leserechte (Chmod 777)
- Rufen Sie die Datei „installation.php” in Ihrem Browser auf.
- Rufen Sie die Datei „upload_editor.php” in Ihrem Browser auf,
geben Sie Ihr Passwort ein und wählen Sie eine Datei zum hochladen aus.
- Wenn die Datei erfolgreich hochgeladen wurde, befindet sich in der Auswahlliste
ein Eintrag mit dem Namen der hochgeladenen Datei und daneben eine ID,
diese ID tragen Sie in die Datei „demoseite.php” ein und laden diese erneut auf
Ihrem Webserver hoch — fertig.
•
Herunterladen: mysql_download_counter.zip
mysql_download_counter.zip
Version vom: 31.10.2010
Dateigröße: 4,8 KB
Dateien: 6
demoseite.php - 522 Byte - 31.10.10
download_counter.php - 1,8 KB - 31.10.10
installation.php - 700 Byte - 31.10.10
upload_editor.php - 3,2 KB - 31.10.10
verbindung.php - 317 Byte - 31.10.10
lies_mich.txt - 1,2 KB - 31.10.10
Viel Spaß damit!
• Alle Downloads anzeigen
Das folgende PHP-Script zeigt alle vorhandenen Downloads an.
Quelltext: „
download_liste.php”
Quelltext anzeigen
1 2 3 4 5 6 7 8 9 |
<?php include("download_counter.php");
if ($datensaetze = mysql_query("SELECT `id` FROM `download_stats`")) { while (list($id) = mysql_fetch_row($datensaetze)) { echo "<p>" . zeigeDownloadLink_ID($id) . "</p>"; } } ?>
|