Seite 1 von 1

Download-Zähler

Verfasst: 25.09.2004 10:06
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.

Verfasst: 25.09.2004 23:22
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

Verfasst: 25.09.2004 23:56
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

Verfasst: 26.09.2004 17:35
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

Verfasst: 29.09.2004 08:41
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.