Hallo zusammen,
ich habe einen Besucherzähler in PHP erstellt, der die nachstehende Ausgabe erzeugt. Das Script arbeitet mit einer Mysql-Datenbank.
Datenbank:
Der erste Satzinhalt ist zwingend vorgeschrieben, da hier der Gesamtzähler gespeichert wird:
Hier das PHP-Script.
<?php
/* *******************************************************
* Besucherzähler in PHP - heute,gestern, gesamt *
* ---------------------------------------------------------------- *
* 01.11.2013 *
********************************************************* *
*/
$verbindung = mysql_connect("dbxxxxxxx.db.1and1.com","dboxxxxxxx","Passwort");
mysql_select_db("dbxxxxxxx");
$ip = $_SERVER["REMOTE_ADDR"];
$ipges = "gesamt";
$today = strtotime("00:00:00");
// Zeit in Sekunden ab 1.1.1970 für Heute 00 Uhr
$yesterday = strtotime('-1 day',
$today);
// Zeit in Sekunden ab 1.1.1970 für Gestern 00 Uhr
$heute = date("d.m.Y", $today);
// Zeit TT.NN.JJJJ für Heute
$gestern = date("d.m.Y", $yesterday);
// Zeit TT.NN.JJJJ für Gestern
// echo "today = $today<br>";
// echo "yesterday = $yesterday<br>";
// echo "heute = $heute<br>";
// echo "gestern = $gestern<br>";
$status = "0";
// gesamt feststellen
$res = mysql_query("SELECT * FROM counter WHERE ip = '$ipges'");
$dsatz = mysql_fetch_assoc($res);
$anzahl_gesamt = $dsatz["gesamt"];
$sql = mysql_query("SELECT * FROM counter where ip = '$ip' AND time = '$heute'");
$row = mysql_fetch_object($sql);
if($ip == $row->ip)
{
if($heute == $row->time)
{
$status = "0";
}
else
{
$status = "1";
}
}
else
{
$status = "2";
}
/*
switch ($status)
{
case "0"; echo "$ip hat uns heute schon besucht<br>";
break;
case "1"; echo "$ip hat uns heute noch nicht besucht<br>";
break;
case "2"; echo "$ip $row->ip hat uns heute oder gestern noch nicht besucht<br>";
break;
}
*/
if ($status > 0)
{
$anzahl_gesamt = $anzahl_gesamt + 1;
$sqlab = "INSERT INTO counter SET ip='$ip', time='$heute', datum='$today', gesamt=$anzahl_gesamt";
mysql_query($sqlab);
}
$anzahl_heute = mysql_query("SELECT * FROM counter WHERE time = '".$heute."' ORDER BY ip DESC"); $anzahl_gestern = mysql_query("SELECT * FROM counter WHERE time = '".$gestern."' ORDER BY ip DESC");
echo "Heute: ";
echo mysql_num_rows($anzahl_heute)."<br>";
echo "Gestern: ";
echo mysql_num_rows($anzahl_gestern)."<br>";
echo "Gesamt: ";
echo $anzahl_gesamt;
// gesamt in db updaten
$sqlab = "update counter set gesamt = $anzahl_gesamt where ip = 'gesamt'";
mysql_query($sqlab);
// alle Sätze löschen, die älter als gestern sind
$sqlab = "delete from counter where datum < '$yesterday'";
mysql_query($sqlab);
?>