Hallo,
in diesem kleinen Tutorial zeige ich euch mal, wie man am besten mal ein Besucherzähler programmieren kann.
Dieser Counter wird mit einer Reloadsperre sein, dass heißt das die Besucher in einer DB gespeichert werden, und zwar mit ihrer IP, so werden sie nur einmal gezählt.
Außerdem beinhaltet das Scipr eine Funktion, wo nach 24 Stunde alle Einträge gelöscht werden.
Fangen wir an, folgende Tabelle braucht ihr in eurer DB:
CREATE TABLE counter
(
id INT(15),
ip INT(15),
date INT (15)
);
Wenn ihr diese Tabelle angelegt habt, kann es los gehen:
Ich werde im Code eine Erklärung mit posten.
counter.php
<?php
error_reporting(E_ALL);
//Datenbank verbindung
$dbName = "Datenbankname";
$dbHost = "Host";
$dbUser = "Benutzername";
$dbPW = "Passwort";
if (!(($dblink = mysql_connect($dbHost,$dbUser,$dbPW)) && (mysql_select_db($dbName,$dblink)))) die(mysql_error());
//Wir speichern die aktuelle Zeit und das aktuelle Datum in einer Variablen
$date = time();
//Überprüfen ob jemand mit dieser IP disen Monat auf der Seite war
$sql ="SELECT ip FROM counter WHERE ip ='".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query ($sql) or die(mysql_error());
if (mysql_num_rows ($result) > 0)
{
//Wenn ja Update des Datums
$sql3 = "UPDATE
counter
SET
date = '".$date."'
WHERE
ip = '".$_SERVER['REMOTE_ADDR']."'";
mysql_query($sql3) OR die(mysql_error());
}
else
{
//Wenn er nicht da war Eintrag in der DB
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO counter (ip, date)
VALUES('$ip', '$date')") or
die(mysql_error());
}
//Löschen der alten Einträge, die älter als 24 Stunden sind
$new_date = $date + 86400;
$sql4 = "DELETE FROM
counter
WHERE
date = '".$new_date."'";
mysql_query($sql4) OR die(mysql_error());
//Ausgeben der Einträge für den Aktuellen Tag
$sql5 = "SELECT
COUNT(*) as Anzahl
FROM
counter";
$result2 = mysql_query($sql5) OR die(mysql_error());
$row = mysql_fetch_assoc($result2);
echo "Besucher der Seite: ".$row['Anzahl']."";
?>
Ich hoffe ich konnte euch mit diesem Scipt ein wenig helfen.
Wenn ja freut es mich.
Bei Fragen einfach melden per PM