Das macht der Code: Das Skript überprüft als allererstes anhand eines Cookies*, ob der User in den letzten zwei Stunden auf das überwachte Element zugegriffen hat. Fällt das Ergebnis negativ aus, so wird eine Textdatei geöffnet oder erstellt, deren Inhalt, die Zugriffszahl, ausgelesen und um eins erhöht. Diese Zahl wird dann wieder in der Textdatei abgespeichert und beim User ein Cookie* erstellt um diesen bei einem weiteren Zugriff in den nächsten zwei Stunden zu identifizieren.
* Die Cookie-Methode ist natürlich aushebelbar. Sei es durch Nicht-Akzeptierung von Cookies, löschen dieser oder der Verwendung eines anderen Browsers. Aber dem User wird es erschwert die Zugriffszahl ohne Aufwand durch viele Klicks zu manipulieren.
// -------------------------------------------------------------------
// ------------- Autor: Patrick Saar - www.patrick-saar.de -----------
// ---------------------PHP Clickcounter v. 1.0 ----------------------
// ------------------ Copyright 2012 Patrick Saar --------------------
// -------------------------------------------------------------------
// Dieser Code muss beim Einfügen in einen HTML Quelltext ganz am Anfang stehen.
// siehe www.php.net - Cookies bzw. Headers
$datei = 'clickcounter';
// Zugriffszahl nur ändern, wenn innerhalb von 2h kein Zugriff dieses Users stattgefunden hat
if(!$_COOKIE[$datei]) {
// Aktuelle Zugriffszahl lesen
$f = fopen($datei.".txt","r");
if($f) {
while(!feof($f)) {
$count = fgets($f);
}
}
fclose($f);
// Zugriffszahl erhöhen
$f = fopen($datei.".txt","w");
if($f) {
intval($count);
$count++;
fputs($f, $count);
fclose($f);
}
// Cookie erstellen
setcookie($datei, "true", time()+7200); // 2h gültig
}
// Header("Location: "download.rar");
// Mit dieser Zeile kann man eine Datei, z.B. einen Download, nach der Ausführung des Skripts aufrufen
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="author" content="Patrick Saar" />
<title>PHP Clickcounter</title>
</head>
<body>
<!-- HTML/PHP Code zum Anzeigen der Zugriffe -->
<p>Zugriffe: $fp = fopen("clickcounter.txt","r"); if($fp) {while(!feof($fp)) {$c = fgets($fp);}} else $c = 0; fclose($fp);echo $c;</p>
</body>
</html>
0,86 KB - Downloads: 3087