Hitlist erstellen

Saimen

Mitglied
Hallo!
Plane grade ein neues Prokjekt, genau genommen ein Downloadportal. Dort will ich ein Script einbauen, dass die Klicks jeder Unterseite zählt. Die meist geklickten Seiten sollen dann in einer Top 50 List erscheinen. Hat jemand ne Ahnung wie man sowas macht?
Danke schon mal!
 
Hallo!

Dort will ich ein Script einbauen, dass die Klicks jeder Unterseite zählt.

Hab zwar sowas noch nie gemacht, aber ich denke Du wirst die gleichen Probleme haben wie ein "Besucherzähler". Eine Unterseite könnte ja von einem User zigfach geklickt werden. Also Cookie, IP-Sperre i.V. mit Zeitsperre und das hilft trotzdem alles nichts, gegen den der eine Seite zigfach klicken will, den ein Cookie kann gelöscht werden und die IP-Adresse im Sekundentakt gewechselt werden (Anonymizer).

Ansonsten mußt Du die Klicks für die einzelnen Unterseiten in einem Flatfile oder in einer Datenbank speichern, wobei ich da die Datenbank bevorzugen würde.
Dort kannst Du die Top 50 dann auch leicht abfragen.

Grüße

Martin
 
Hallo!
Danke erstmal für deine Antwort.
Ein Script für den "Besucherzähler" der einzelnen Unterseiten habe ich schon, es speichert auch die einzelnen Ip's in der Datenbank. Aber jetzt fehlt mir noch das Script, das die einzelnen Hits ordnet und dann in einer Liste anzeigt. Das bekomme ich nicht hin.
 
Hallo!

Wenn Du MySQL verwendest könnte die query so aussehen:

Code:
SELECT klicks FROM table ORDER BY klicks DESC LIMIT 0,50


Grüße

Martin
 
Hey, den folgenden Codeschnipsel nutze ich, um die Klicks meiner Tutorials zu zählen. Dabei hab ich 2 Tabellen, einmal die Tutorials selbst und eine namens Tutorials_Klicks, die die IP der User speichert und nach einem Tag wieder löscht, damit nicht bei jedem seitenrefresh ein neuer Klick gezählt wird (brauchst du bei dir evtl nicht, da es ja um downloads geht)

PHP:
    // IPs der User löschen, die dieses Tutorial vor mehr als einem Tag angeklickt haben
    $sql = "DELETE FROM
            	Tutorials_Klicks
            WHERE
            	DATE_SUB(NOW(), INTERVAL 1 DAY) > Datum
            ";
    doQuery($sql);

    // Prüft, ob der User heute schon das Tutorial angeklickt hat
    $sql = "SELECT
    	   	IP
            FROM
            	Tutorials_Klicks
            WHERE
                 Tutorial_ID = '".$_GET['id']."' AND
                 IP = '".$_SERVER['REMOTE_ADDR']."'
           ";
    $result = doQuery($sql);
    $anzahl = mysql_num_rows($result);
    // Falls ja, wird sein Datum aktualisiert
    if ($anzahl){
    	$sql = "UPDATE
                		Tutorials_Klicks
                 SET
                         Datum = NOW()
            	WHERE
                 	Tutorial_ID = '".$_GET['id']."' AND
                 	IP = '".$_SERVER['REMOTE_ADDR']."'
                ";
    	doQuery($sql);
    }
    // Ansonsten werden die Klicks um 1 erhöht..
    else {
    	$sql = "UPDATE
                		Tutorials
                 SET
                         Klicks = Klicks+1
            	WHERE
                 	ID = '".$_GET['id']."'
                ";
    	doQuery($sql);
         // .. und die IP des Users gespeichert
    	$sql = "INSERT INTO
         		Tutorials_Klicks
                         (Tutorial_ID,
                          IP,
                          Datum
                  	)
                 VALUES ('".$_GET['id']."',
                  	 '".$_SERVER['REMOTE_ADDR']."',
                          NOW()
                  	)
                ";
    	doQuery($sql);
    }

Die Ausgabe könnte so aussehen
PHP:
$sql = "SELECT
                         ID,
                         DATE_FORMAT(Erstellungsdatum, '%d.%m.%Y') as Datum,
                         Typ,
                         Titel,
                         Klicks
             FROM
                         Tutorials
             ORDER BY
                         Klicks DESC,
                         Erstellungsdatum DESC
            ";

hoffe kannst was damit anfangen ;)
 
Zurück