Download-Zähler

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Loewenherz
Mitglied
Beiträge: 624
Registriert: 10.02.2003 20:11
Wohnort: Saarlouis
Kontaktdaten:

Download-Zähler

Beitrag von Loewenherz »

Nachdem ich mich vor einer Weile schon mal durch gängige Archive gekämpft habe, frage ich erst einmal hier nach.

Ich brauche ein relativ simples PHP-Programm, das einfach nur Downloads zählt und diese in eine MySQL-Datenbank schreibt. Alles ohne dass dieses Programm nach aussen hin in Erscheinung tritt (keine Formatierungen, keine Templates)- ausgenommen in der Ausgabe einer Statistik, die irgendwo includiert werden kann. Die Parameter wie Speicherort der Downloads und Titel der Downloads können im Linkdownload untergebracht oder in einem Adminbereich definiert werden.
Bislang hab ich ein altes Perl-Prog laufen, das sich aber zuweilen verschluckt, wenn gleichzeitig Downloads laufen. Was ich sonst gefunden habe, ist der Overkill.
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag von Dennis63 »

Dafür braucht man eigentlich gar kein Script. Sobald man sich mit MySQL und PHP befasst (es gibt genug Tutorials), ist das eine ganz einfache Sache.
Per PHP-Script zählst Du einfach einen Zähler in MySQL hoch. Das geht mit folgendem Querry [1]. Dann leitet das PHP-Script per Header [2] auf die EXE um. Und mit einem weiteren Querry [3] ließt Du den Wert aus und kannst ihn auf Deiner Internetseite anzeigen.

Code: Alles auswählen

[1]
UPDATE dl_count SET count = count + 2 WHERE name='meinProgramm'

[2]
Header("Location: ".$url); // $url mit http://

[3]
SELECT count FROM dl_count WHERE name = 'meinProgramm'
Grüße
Dennis
Benutzeravatar
MrMind
Mitglied
Beiträge: 464
Registriert: 29.11.2003 17:14
Wohnort: Darmstadt/Odw
Kontaktdaten:

Beitrag von MrMind »

Genau so würde ich das auch machen, aber evtl. eine kleine Änderung.

Wenn du deine Downloads in eine MySQL DB hast, würde ich dies nicht über den Programmnamen abfragen und den Counter hochrechnen lassen sondern über die ID (mit auto_increment erstelltest Feld).

Der Link zum Download könnte dann wie folgt aussehen:

http://www.deineDomain.de/downloads.php?id=5

in der downloads.php

sollte dann eine derartige Abfrage vorhanden sein:

Code: Alles auswählen

if( !empty($HTTP_GET_VARS['id']) && empty($HTTP_GET_VARS['mode']) )
{
    $sql = "UPDATE dl_table SET count = count + 1 WHERE id='" . $HTTP_GET_VARS['id'] . "'";
    if( mysql_query($sql) )
    {
          Header("Location: ./download.php?mode=dl&id=" . $HTTP_GET_VARS['id']);
    }
    else
    {
        //Fehlermeldung auf Templatesausgabe
     }
}
Und den Download würde ich in der selben Datei machen (damit du nicht zuviele Dateien hast) mit der Abfrage ob die ID und mode gesetzt ist (wurde bei der Beispielsabfrage lediglich überprüft ob ID gesetzt und nicht leer ist und mode nicht gesetzt ist. Die Mode-Variable wird dann in der Header-Anweisung mit weiterübermittelt).

Das Laden des Downloads würde ich persönlich in einem iFrame machen damit der Pfad zum Download nicht direkt in der Adresszeile steht, damit die User net diesen einfach kopieren und dann den Counter umgehen.

Mfg
MrMind
Selbst ist der Coder
Coder unter Linux
Dennis63
Ehemaliges Teammitglied
Beiträge: 2597
Registriert: 02.07.2003 18:46

Beitrag von Dennis63 »

Man darf dabei aber niemals die Variablen direkt in das MySQL Querry einbauen.

Stell Dir mal vor, da macht jemand ein 'delete WHERE id = 1' mit rein. Dann ist deine Tabelle leer.

Immer braf Funktionen wie MySQLEscapeString oder HTMLSpecialChars (infos auf php.net) benutzen.

Grüße
Dennis
Benutzeravatar
Loewenherz
Mitglied
Beiträge: 624
Registriert: 10.02.2003 20:11
Wohnort: Saarlouis
Kontaktdaten:

Beitrag von Loewenherz »

Vielen Dank für eure Hinweise.
Ich habe hoffentlich jemanden gefunden, der mir das Ganze umsetzt. PHP reizt mich zwar schon lange, aber es mangelt an Zeit. Da mache ich lieber das, was ich kann (z.B. Pflichtenheft schreiben) und lass jemanden proggen, der was davon versteht.
Antworten

Zurück zu „Coding & Technik“