|
|
|
Counter Funktion via PHP
Zurück zur Übersicht Liebe/r Besucher, in diesem Tutorial erkläre ich euch wie ihr euch einen erweiterten Counter via PHP / MySQL ganz einfach programmiert!
Als Grundlage solltet ihr eine Datenbank (bei mir heiß sie homepage) und eine Tabelle(bei mir counter) besitzen ;). Diese sollte wie folgt aufgebaut sein:
ip,varchar(150),not null, , , primary, ,
time,varchar(150),not null, , , , ,
Warum wir gerade diesen Aufbau gewählt haben wirst du im laufe des Tutorials noch erfahren.
counter.php
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
|
<?php
/* ********************************************
Counter Funktion via PHP
---------------------------------------------
by [Sn1ff3r] für php-einfach.de , Oktober 2009
---------------------------------------------
Das Skript darf frei genutzt werden, jedoch
darf weder dieser Kasten entfernt noch ein
eigenes Copyright o.Ä. eingefügt werden!
---------------------------------------------
******************************************** */
$verbindung = mysql_connect("localhost", "USERNAME", "PASSWORT")or die("<b>Error:</b><br>".mysql_error()."");
mysql_select_db("DATENBANK")or die("<b>Error:</b><br>".mysql_error()."");
/* *******************************************
* AB HIER KEINE ÄNDERUNGEN MEHR VORNEHMEN *
******************************************* */
$ip = $_SERVER["REMOTE_ADDR"];
$time_h = date("d.m.Y", time());
$time_g = date("d.m.Y", time()-86400);
$sql = mysql_query("SELECT * FROM counter ORDER BY ip DESC");
$row = mysql_fetch_object($sql);
if($ip == $row->ip)
{
$timestamp = date("d.m.Y", $row->time);
if($time_h == $timestamp)
{
}
else
{
$einfuegen = mysql_query("INSERT INTO counter SET ip='$ip', time='".date("d.m.Y", time())."'");
}
}
else
{
$einfuegen = mysql_query("INSERT INTO counter SET ip='$ip', time='".date("d.m.Y", time())."'");
}
$today = mysql_query("SELECT * FROM counter WHERE time = '".$time_h."' ORDER BY ip DESC");
$yesterday = mysql_query("SELECT * FROM counter WHERE time = '".$time_g."' ORDER BY ip DESC");
$gesamt = mysql_query("SELECT * FROM counter");
echo "Heute: ";
echo mysql_num_rows($today)."<br>";
echo "Gestern: ";
echo mysql_num_rows($yesterday)."<br>";
echo "Gesamt: ";
echo mysql_num_rows($gesamt)."<br>";
?>
|
|
Als erstes haben wir mit mysql_connect(); eine Datenbankverbindung hergestellt, wobei wir dann noch mit mysql_select_db(); unsere Datenbank ausgewählt haben.
Als nächstes haben wir mit $_SERVER['REMOTE_ADDR'] unsere Ip-Addresse in die Variable $ip gespeichert. Diese werden wir später noch für etwas brauchen.
Nun haben wir 2 Variablen. $time_h steht dafür was die Zeit heute angeht und darum haben wir auch date("d.m.Y", time()) und dann haben wir auch noch eine Variable die, die Besucher für gestern zählen soll und diese desshalb bei mir im Beispiel als $time_g gespeichert haben und in der folgende date() Funktion benutzt haben:
date("d.m.Y", time()-86400)
Nun damit wir auch sehen können wie viele User wir Heute, Gestern und Gesamt auf unserer Seite haben, brauchen wir 3 MySQL Abfragen.
Dazu haben wir uns die Abfragen $today, $yesterday und $gesamt erstellt.
Daraus lesen wir nun hinaus welche Besucher wir Heute, Gestern und Gesamt haben. Bei Heute und Gestern wurde eine WHERE Clause hinzugefügt, denn wir wollen ja nicht alle Besucher aufzählen sondern nur die, die wir Heute haben bzw. Gestern hatten.
Jetzt nachdem wir unsere Variablen haben starten wir mit einer If-Anweisung wo überprüft wird, ob die IP schon in der Datenbank exestiert. Wenn ja starten wir im ersten teil unserer If-Anweisung noch eine Anweisung und überprüfen ob der Besucher schon einmal heute auf unserer Seite gewesen ist. Ist dies der Fall wird nix unternommen aber anderenfalls also else nehmen wir einen Eintrag vor, das er heute unsere Seite besucht hat. Nun wieder zurück zu unser IP überprüfung!
Sollte aber allerdings die IPaddresse nicht in der Datenbank exestieren, so nehmen wir genauso den gleichen Eintrag vor als wenn der User heute noch gar nicht bei uns auf der Seite gewesen wäre, was demnach dann auch richtig ist!
Als letztes brauchen wir noch 3 mysql_num_rows und ein paar echos.
Hier habe ich nochmal den Code!
echo "Heute: ";
echo mysql_num_rows($today)."<br>";
echo "Gestern: ";
echo mysql_num_rows($yesterday)."<br>";
echo "Gesamt: ";
echo mysql_num_rows($gesamt)."<br>";
Fertig ist unser Counter! Ich hoffe euchhat mein Tutorial geholfen und auch sehr gefallen.
*UPDATE's:
- Mir ist aufgefallen wenn man den Counter aufruft zeigt er erst noch die alten Besucher an.
Diesen Fehler habe ich mal behoben!
Kommentare
Zurück zur Übersicht
Autor Sn1ff3r
|
|
|
|