Klar, ist allerdings meines Erachtens einen Tick komplizierter und aufwändiger.aber es geht auch mit 2 Textdokumenten
Das einfachste wäre einfach ein Skript als Proxy zwischenzuschalten, das den Zugriff auf die Dateien verwaltet und dann auf die Datei weiterleitet.Ich weiß nur nicht, wie ich onlick etwas in php bewerkstellige
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. ;-)
...mmhhh...Das einfachste wäre einfach ein Skript als Proxy zwischenzuschalten, das den Zugriff auf die Dateien verwaltet und dann auf die Datei weiterleitet.
Fehlt ja nur noch das die TXT-Datei 777 Rechte hatDas ist egal, Datenbank geht, aber es geht auch mit 2 Textdokumenten, eines für die tagesaktuellen IPs und
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 . 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
...auch das würde ich anderes und sicherer bauen. z. B. mit einer Checksumme statt den richtigen Dateinamen oder einer guten Verschlüsselung.Url für den Downloadlink könnte dann so aussehen: meineDateiverwaltung.php?file=nameVondemZuDownloadendenFile.xyz
...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 gibtIch weiß nur nicht, wie ich onlick etwas in php bewerkstellige
Oh ja...- 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.
Ich hoffe ich konnte helfen .
Okay. Wieder mal etwas gelernt. :-)WICHTIG: Die "SELECT count" Abfrage ist bei meheren Datensätze schneller wie z. B. Select IP FROM Downloadcounter
Die Idee mit der Checksumme - muss ich mir voller Neid eingestehen - finde ich genial. Simpel und effektiv.