Ergebnis 1 bis 6 von 6
  1. #1
    j-l-n Guest

    einfacher Download-Counter (Anleitung für Anfänger)

    Nach dem Lesen folgenden Threads (http://forum.jswelt.de/serverseitige...d-counter.html (Download Counter)) habe ich einen möglichst einfachen Download-Counter entwickelt, der keinerlei Datenbank benötigt. Diesen möchte ich auch kurz hier vorstellen, da er sich perfekt als Tutorial eignet.

    1. Schritt: leeren Ordner "statistics" und die Datei "download.php" anlegen

    2. Schritt: nun bauen wir schrittweise das Skript zusammen:

    -der Dateiname wird aus der URL gelesen, weiteres hierzu in Schritt 3)
    PHP-Code:
    $filename $_GET['id']; 
    -nur wenn dieser Dateiname auch angegeben ist, wird das Skript weiter ausgeführt, ansonsten gibt es eine Fehlermeldung aus:
    PHP-Code:
    if (!empty($filename)){ 

    //dieser Teil folgt jetzt



    else {
    echo
    "Fehler: Keine gültige Download-ID!"

    -nun wird die Statistikdatei (mehr dazu unten) geöffnet; falls sie noch nicht existiert, beginnt das Skript bei 0 zu zählen
    PHP-Code:
    $counter = @file_get_contents("statistics/$filename.txt");
        if(
    $counter == ""
        { 
           
    $counter 0
        } 
    -wird die download.php aufgerufen, wird der Zähler bei jedesmal um 1 erhöht
    PHP-Code:
    $counter++; 
    -zum Schluss speichern wir die neue Downloadzahl noch
    PHP-Code:
    @file_put_contents("statistics/$filename.txt"$counter); 
    -...und leiten zum eigentlichen Download weiter:
    PHP-Code:
    header("Location: $filename"); 
    Das war der letzte Teil diesen Schritts! Hier noch einmal der gesamte Code:
    PHP-Code:
    <? 
    /* 
    einfacher Download-Counter ohne Datenbank auf Textdateienbasis 
    ---------- 
    Autor: Julian (http://forum.jswelt.de/members/julian.html) 
    ----------
    !!!!! Dieser Vermerk darf nicht entfernt werden !!!!!
    */ 


    $filename $_GET['id']; // holt sich den Dateinamen aus der URL

    if (!empty($filename)){ 

        
    //wenn noch keine Statistik angelegt, Zähler bei 0 beginnen
        
    $counter = @file_get_contents("statistics/$filename.txt");
        if(
    $counter == ""
        { 
           
    $counter 0
        } 

        
    //bei jedem Download Zähler um 1 erhöhen 
        
    $counter++; 

        
    //Downloadanzahl in Textdatei schreiben mit Namen "Dateiname".txt
        
    @file_put_contents("statistics/$filename.txt"$counter);

        
    //zum angeforderten Datei-Download weiterleiten 
        
    header("Location: $filename"); 



    else { 
    //wenn in der URL kein Dateiname angegeben, Fehlermeldung anzeigen
    echo"Fehler: Keine g&uuml;ltige Download-ID!"


    ?>
    Fahren wir mit dem 3. und letzten Schritt fort:
    Jeder Link zu einem Download muss nun nach diesem Schema umgeleitet werden:
    download.php?id={Dateiname des Downloads}
    Heißt die Datei z.B. bilder.zip, muss der Link folgendermaßen lauten:
    HTML-Code:
    <a href="download.php?id=bilder.zip">Zum Download</a>

    Fertig! Im Ordner "statistics" kannst du nun nachsehen, wie oft die Dateien heruntergeladen wurden. Der Dateiname der richtigen Datei ist
    {Name des Downloads}.txt
    Willst du z.B. wissen, wie viele Personen sich die bilder.zip abgerufen haben, öffne "bilder.zip.txt".


    Bitte teilt mir euere Meinung und Verbesserungsvorschläge mit!
    Geändert von j-l-n (15-01-2014 um 21:48 Uhr) Grund: Umsetzung eines Vorschlags

  2. #2
    rico2009 Guest

    AW: einfacher Download-Counter (Anleitung für Anfänger)

    Hi,

    ich habs jetzt zwar nur überfolgen, aber ansich ganz gut. Ich hätte 2 Anmerkungen/Verbesserungsvorschläge:
    1. Anstelle von $variable != "", könnte man auch die empty() Funktion verwenden (PHP: empty - Manual)
    2. $_GET['id'] sollte eventuell escaped werden. (Auch wenn keine DB Aktionen erfolgen, aber es sind Get-Parameter und sie kommen aus dem bösen INet...)


    Gruß

  3. #3
    j-l-n Guest

    AW: einfacher Download-Counter (Anleitung für Anfänger)

    Danke, den Tipp, empty() zu verwenden, habe ich gleich umgesetzt
    Meiner Meinung nach besteht aber bei diesem Projekt keinerlei Notwendigkeit, $_GET zu escapen. Kann mir nicht vorstellen, was da passieren sollte.

  4. #4
    rico2009 Guest

    AW: einfacher Download-Counter (Anleitung für Anfänger)

    Zitat Zitat von Julian JP Beitrag anzeigen
    Meiner Meinung nach besteht aber bei diesem Projekt keinerlei Notwendigkeit, $_GET zu escapen. Kann mir nicht vorstellen, was da passieren sollte.
    Ich denke auch nicht, dass irgendwas passieren könnte. Ich bin mittlerweile nur dazu übergegangen alles was ein "fremder" Benutzer eingibt oder eingeben kann zu escapen.

    Wenn ich so drüber nachdenke, könnte es doch eine Schwachstelle geben. Der filename wird auch ans header(location) weitergegeben. Wenn dort nun einer JS eingibt und einem Benutzer unterschläußt, könnte! es z.B. massenhaft PopUp Fenster geben oder ähnliches. Ich bin jetzt kein Experte im Hacken, aber vielleicht, ach keine Ahnung. Ich würde escapen, sicher ist sicher. :-)

  5. #5
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: einfacher Download-Counter (Anleitung für Anfänger)

    Ich sehe nur ein Problem, wenn in $_GET["id"] sowas wie "../../wichtige" drin steht. Dann wird die Datei "../../wichtige.txt" überschrieben - falls es so eine gibt.

    Generell muss man sich Gedanken über Ordnerstrukturen machen.

  6. #6
    j-l-n Guest

    AW: einfacher Download-Counter (Anleitung für Anfänger)

    Stimmt, das hab ich nicht bedacht...

Ähnliche Themen

  1. [FRAGE] Download Counter
    Von gatomio im Forum Serverseitige Programmierung
    Antworten: 15
    Letzter Beitrag: 02-01-2014, 17:45
  2. Frage zu einem Download Counter ...
    Von Hamlet im Forum Serverseitige Programmierung
    Antworten: 1
    Letzter Beitrag: 01-09-2005, 09:37
  3. Antworten: 4
    Letzter Beitrag: 20-12-2003, 23:43
  4. Counter für PHP anfänger
    Von ELMX im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 05-12-2002, 16:25
  5. grafischen Counter in textbasierten Daily-Counter umschreiben....
    Von Metallica im Forum Serverseitige Programmierung
    Antworten: 13
    Letzter Beitrag: 05-07-2001, 18:44

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •