Downloadcounter in php

  • #1, by selmiakWednesday, 08. September 2010, 19:53 15 years ago
    huhu hat jemand zufällig ein simples phpscript für einen Downloadcounter parat. Zur not geht auch mit javascript, nur damit kenne ich mich nicht so sonderlich gut aus. Im Prinzip soll das Script nur die Klicks auf einen Link (zum Downloadfile) zählen und am besten jede IP nur einmal pro Tag annehmen.

    Newbie

    0 Posts


  • #2, by BrokenClawThursday, 09. September 2010, 01:58 15 years ago
    Simpel bedeutet ohne richtige Datenbank, die die IPs und die Anzahl der Views speichert?

    Newbie

    0 Posts

  • #3, by selmiakThursday, 09. September 2010, 19:23 15 years ago
    Das ist egal, Datenbank geht, aber es geht auch mit 2 Textdokumenten, eines für die tagesaktuellen IPs und eins für die Gesamtzahl. Da kann man dann ja auch die tagesaktuellen Downloadzahlen herauslesen. Ich weiß nur nicht, wie ich onlick etwas in php bewerkstellige roll

    Newbie

    0 Posts

  • #4, by BrokenClawThursday, 09. September 2010, 20:26 15 years ago
    aber es geht auch mit 2 Textdokumenten
    Klar, ist allerdings meines Erachtens einen Tick komplizierter und aufwändiger.

    Ich weiß nur nicht, wie ich onlick etwas in php bewerkstellige
    Das einfachste wäre einfach ein Skript als Proxy zwischenzuschalten, das den Zugriff auf die Dateien verwaltet und dann auf die Datei weiterleitet.

    Url für den Downloadlink könnte dann so aussehen: meineDateiverwaltung.php?file=nameVondemZuDownloadendenFile.xyz

    das Skript meineDateiverwaltung.php würde dann prüfen, ob - der User die notwendigen Rechte besitzt um die Datei nameVondemZuDownloadendenFile.xyz herunterzuladen - prüfen ob die IP schon mal hier war ($_SERVER['REMOTE_ADDR'] ist glaube ich die UserIP) - wenn ja, die Anzahl der Downloads für nameVondemZuDownloadendenFile.xyz aus der Datenbank auslesen, um eins erhöhen und wieder zurückschreiben, egal ob Textfiles oder richtige Datenbank - und zum richtigen File weiterleiten, ( header('Location: urlZumFile') ) oder es einlesen und mit den richtigen Headern ausgeben. Wobei letzteres ziemliche Sicherheitslöcher reißen kann.

    Ist sicher nicht der performanteste Weg, aber der einzige der mir auf die schnelle eingefallen ist. Ich hatte selbst mal so etwas geschrieben, finde allerdings den Quellcode nimmer. Vielleicht auch besser so, meine PHP-Skripte waren zum größten Teil ein Sammelsurium an Sicherheitslöchern. ;-)

    Newbie

    0 Posts

  • #5, by calliFriday, 10. September 2010, 12:19 15 years ago
    Hey Boys,

    Das einfachste wäre einfach ein Skript als Proxy zwischenzuschalten, das den Zugriff auf die Dateien verwaltet und dann auf die Datei weiterleitet.
    ...mmhhh...

    Das ist egal, Datenbank geht, aber es geht auch mit 2 Textdokumenten, eines für die tagesaktuellen IPs und
    Fehlt ja nur noch das die TXT-Datei 777 Rechte hat wink.

    Naja ich möchte mal meine Meinung ganz neutral äußern, nicht das es hinterher ein böses Erwachen in Sachen Performance oder Sicherheit gibt. Ich würde einen Downloadcounter folgendermaßen aufbauen: 1. Natürlich mit einer Datenbank wink. Tabelle "Downloadcounter" anlegen 2. Spalten wie ID, IP, Datum hinzufügen 3. Bei Klick auf den Downloadlink nachprüfen ob es einen Eintrag in der Datenbank gibt mit der IP und am heutigen Datum. Diese Datenbankabfrage würde ich wie folgt aufbauen: SELECT count(0) FROM Downloadcounter WHERE IP='xx.xxx.xxx.xx' AND Datum = '10.09.2010'. WICHTIG: Die "SELECT count" Abfrage ist bei meheren Datensätze schneller wie z. B. Select IP FROM Downloadcounter 4. Nach der Datenbankabfrage gucken ob die Datenbank eine 0 oder größer liefert. Wenn 0 dann einen Insert ansonsten nichts. 5. Counter ausgeben mit "SELECT count()" FROM Downloadcounter

    Url für den Downloadlink könnte dann so aussehen: meineDateiverwaltung.php?file=nameVondemZuDownloadendenFile.xyz
    ...auch das würde ich anderes und sicherer bauen. z. B. mit einer Checksumme statt den richtigen Dateinamen oder einer guten Verschlüsselung.

    Ich weiß nur nicht, wie ich onlick etwas in php bewerkstellige
    ...Nur zur Info: Onclick = Javascript = clientbasiert Also in deiner PHP Datei kannst du folgendes machen: download.php?name=9x82udun38d828927123 (9x82udun38d828927123 = checksumme von der Download-Datei). In der Download.php prüfst du dann nach ob es eine Download-Datei gibt, wo der Name ALS CHECKSUMME = 9x82udun38d828927123 gibt wink. Ich hoffe man konnte das verstehen ^^. Aber das ist einer von vielen Schritten die man sicherheitstechnisch einbauen sollte.

    - und zum richtigen File weiterleiten, ( header('Location: urlZumFile') ) oder es einlesen und mit den richtigen Headern ausgeben. Wobei letzteres ziemliche Sicherheitslöcher reißen kann.
    Oh ja...

    Ich hoffe ich konnte helfen wink.

    Newbie

    11 Posts

  • #6, by BrokenClawFriday, 10. September 2010, 13:42 15 years ago
    WICHTIG: Die "SELECT count" Abfrage ist bei meheren Datensätze schneller wie z. B. Select IP FROM Downloadcounter
    Okay. Wieder mal etwas gelernt. :-)

    Die Idee mit der Checksumme - muss ich mir voller Neid eingestehen - finde ich genial. Simpel und effektiv.

    Newbie

    0 Posts