|
|
|
Web Counter 2.0
Zurück zur Übersicht Das Update ist endlich fertig, und mit stolz kann ich euch nun meinen neuen Counter präsentieren.
Ich habe ihn von der Prozudualen Programmierung in die Objekt Orientiere Programmierung geschrieben.
Natürlich gibt es auch ein AddOn, der hier nicht mit eingeführt ist. Das AddOn könnt ihr nämlich euch im Forum besorgen.
Das AddOn ist, dass die Leute sehen können, wie oft sie diese Seite heute schon besucht haben.
Doch vorher, bevor wir mit dem Code anfangen, schreiben wir uns in die Datenbank einen Befehl, der uns eine Tabelle erstellt.
| Zitat: |
CREATE TABLE IF NOT EXISTS `site_counter` (
`ip` varchar(15) NOT NULL,
`visit` date NOT NULL,
`online` varchar(255) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
Nun zum wesentlichen, der Counter setzt voraus dass wir uns mit der Objekt Orientierten Programmierung auskennen.
Als erstes erstellen wir uns eine Klasse mit dem Namen Counter und bringen die wesentlichen Variablen gleich hervor, die wir benötigen
| 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:
|
<?php
/*
Web Counter Version 2.0
Dieser Webcounter bietet eine allgemeine Statistik, wie viele Besucher derzeit auf deiner Homepage Online sind, Wie viele sie heute schon besucht haben, wie viele sie gestern besucht haben und wie viele besucher gesamt deine Homepage besucht haben.
Copyright (C) [2011] [Mr.Funny]
Dieser Code ist ein freies Skript. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Skript erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>.
*/
class counter
{
public $minute = 5; // Trage hier ein, wie lange die Besucher als Online angezeigt werden.
public $tag = NULL;
public $gestern = NULL;
private $host;
private $user;
private $pass;
private $name;
private $befehl;
}
?>
|
|
Dies sind wesentliche Befehle, die wir brauchen, um den Counter später einwandfrei aufrufen können.
Zuerst wollen wir eine sofortige Datenbank Verbindung herstellen, damit wir die Datensätze einfacher auslesen können. Dazu brauchen wir die Funktionen __construct(); und __destruct();
Warum __destruct(); ?
Wir brauchen diese Funktion, um später auch wieder die MySQL Verbindung zu beenden.
Wir fügen jetz die 2 Funktionen hinzu
| 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:
|
<?php
public function __construct($host, $user, $pass, $name)
{
$this->webserver = $host;
$this->username = $user;
$this->password = $pass;
$this->database = $name;
$this->connect = @mysql_connect($this->webserver, $this->username, $this->password);
if(is_resource($this->connect))
{
if(!@mysql_select_db($this->database))
{
$this->fehler("Die Datenbank <strong>".$this->database."</strong> konnte nicht geöffnet werden. Bitte überprüfen sie ihre Einstellungen.");
}
}
else
{
$this->fehler("Es konnte keine Verbindung zum MySQL Server aufgebaut werden. Bitte überprüfen sie ihre Einstellungen.");
}
}
public function __destruct()
{
if(is_resource($this->connect))
{
if(!@mysql_close($this->connect))
{
$this->fehler("Die Verbindung zum MySQL Server konnte nicht beendet werden.");
}
}
else
{
$this->fehler("Es besteht keine Verbindung zum MySQL Server, darum kann sie auch nicht beendet werden.");
}
}
?>
|
|
Nun besitzen wir die 2 Funktionen und sehen wir haben die funktion $this->fehler();
Dies Funktion wird nur ausgeführt, wenn wir einen MySQL Fehler haben. Da wir diese Funktion aber in unserer Klasse nicht haben, fügen wir diese jetzt zu unserem Skript hinzu:
| PHP |
1:
2:
3:
4:
5:
6:
7:
|
<?php
private function fehler($text="")
{
echo '<br /><strong>MySQL Fehler:</strong><br />'.$text.'<br />';
exit();
}
?>
|
|
Nun wenn wir unsere Klasse aufrufen, und ausführen, sehen wir schon, wenn wir einen Fehler haben, dass dieser uns angezeigt wird. Wenn nicht, haben wir das alles perfekt gemacht.
Doch nun brauchen wir die Funktionen zum zählen und überprüfen der Einträge.
Dafür fügen wir 2 Funktionen hinzu mit den namen zaehlen(); und ueberpruefen();
| 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:
|
<?php
public function zaehlen($gezaehlt="")
{
echo mysql_num_rows($gezaehlt);
}
public function ueberpruefen($ip="")
{
$this->ip = $ip;
$this->befehl = @mysql_query("SELECT * FROM `site_counter` WHERE `ip` = '".$this->ip."' AND `visit` = '".date("Y-m-d", time())."' LIMIT 0,1");
$this->count = mysql_num_rows($this->befehl);
if($this->count == 0)
{
$this->befehl = @mysql_query("INSERT INTO `site_counter`(`ip`, `visit`, `online`)VALUES('$this->ip', '".date("Y-m-d", time())."', '".time()."');");
}
else
{
$this->befehl = @mysql_query("UPDATE `site_counter` SET `online` = '".time()."' WHERE `ip` = '".$this->ip."' LIMIT 1");
}
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
?>
|
|
mit der funktion zaehlen(); zählen wir nachher die Einträge, wie viele wir haben. Ob online, heute, gestern oder gesamt.
Mit der Funktion ueberpruefen(); überprüfen wir, ob die IP schon exestiert und ob diese IP auch von heute ist. (Weil wenn wir eine IP gestern hatten und am nächsten tag die gleiche, wird sie nicht geupdatet und bei heute angezeigt. Sondern nur bei online angezeigt wird!)
Doch uns fehlen noch 3 Funktionen und zwar: online();, heute();, gestern(); und gesamt();
Dafür gehen wir wieder in unsere Klasse und geben dort tippen wie folgt alles hinein:
| 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
public function online()
{
$this->minuten = $minute;
$result = time()-$this->minuten*60;
$this->befehl = @mysql_query("SELECT * FROM `site_counter` WHERE `online` >= '".$result."'");
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
public function heute($tag="")
{
$this->heute = $tag;
$this->befehl = @mysql_query("SELECT * FROM `site_counter` WHERE `visit` = '".$this->heute."'");
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
public function gestern($gestern="")
{
$this->gestern = $gestern;
$this->befehl = @mysql_query("SELECT * FROM `site_counter` WHERE `visit` = '".$this->gestern."'");
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
public function gesamt()
{
$this->befehl = @mysql_query("SELECT * FROM `site_counter`");
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
?>
|
|
Mit diesen Funktionen lesen wir später aus, welche Besucher gerade online die Seite besuchen, wie viele wir heute schon auf der Seite gehabt haben, wie viele gestern und wie viele wir schon insgesamt auf unser webseite gehabt haben.
Nun ist unsere Klasse fertig ist, können wir unsere Klasse aufrufen und dannach auch wieder beenden. Wenn ihr alles richtig gemacht habt, könnt ihr diese auch testen. Nun rufen wir die Klasse auf, schreiben unsere Funktionen hinein und beenden sie auch wieder.
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
<?php
$count = @new counter("SERVER","BENUTZERNAME","PASSWORT", "DATENBANKNAME");
$count->ueberpruefen($_SERVER["REMOTE_ADDR"]);
$count->zaehlen($count->online());
$count->zaehlen($count->heute("".date("Y-m-d", time()).""));
$count->zaehlen($count->gestern("".date("Y-m-d", time()-24*60*60).""));
$count->zaehlen($count->gesamt());
unset($count);
?>
|
|
Wir haben unser Skript fertig, und so wird es auch funktionieren. Ihr habt nun einen vollwertigen Counter der euch zeigt wie viele Besucher derzeit auf der Seite sind, wie viele heute diese Seite besucht haben, wie viele sie gestern besucht haben und wie viele besucher wir gesamt haben.
Wenn euch dass lästige kopieren und einfügen lästig ist, hier nochmal der ganze Counter, in einem Skript abschnitt wie er aussehen sollte!
Viel spaß mit dem Counter und bis die Tage.
Status: Getestet!
| 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:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
|
<?php
/*
Web Counter Version 2.0
Dieser Webcounter bietet eine allgemeine Statistik, wie viele Besucher derzeit auf deiner Homepage Online sind, Wie viele sie heute schon besucht haben, wie viele sie gestern besucht haben und wie viele besucher gesamt deine Homepage besucht haben.
Copyright (C) [2011] [Mr.Funny]
Dieser Code ist ein freies Skript. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Skript erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>.
*/
class counter
{
public $minute = 5; // Trage hier ein, wie lange die Besucher als Online angezeigt werden.
public $tag = NULL;
public $gestern = NULL;
private $host;
private $user;
private $pass;
private $name;
private $befehl;
public function __construct($host, $user, $pass, $name)
{
$this->webserver = $host;
$this->username = $user;
$this->password = $pass;
$this->database = $name;
$this->connect = @mysql_connect($this->webserver, $this->username, $this->password);
if(is_resource($this->connect))
{
if(!@mysql_select_db($this->database))
{
$this->fehler("Die Datenbank <strong>".$this->database."</strong> konnte nicht geöffnet werden. Bitte überprüfen sie ihre Einstellungen.");
}
}
else
{
$this->fehler("Es konnte keine Verbindung zum MySQL Server aufgebaut werden. Bitte überprüfen sie ihre Einstellungen.");
}
}
public function __destruct()
{
if(is_resource($this->connect))
{
if(!@mysql_close($this->connect))
{
$this->fehler("Die Verbindung zum MySQL Server konnte nicht beendet werden.");
}
}
else
{
$this->fehler("Es besteht keine Verbindung zum MySQL Server, darum kann sie auch nicht beendet werden.");
}
}
private function fehler($text="")
{
echo '<br /><strong>MySQL Fehler:</strong><br />'.$text.'<br />';
exit();
}
public function zaehlen($gezaehlt="")
{
echo mysql_num_rows($gezaehlt);
}
public function ueberpruefen($ip="")
{
$this->ip = $ip;
$this->befehl = @mysql_query("SELECT * FROM `site_counter` WHERE `ip` = '".$this->ip."' AND `visit` = '".date("Y-m-d", time())."' LIMIT 0,1");
$this->count = mysql_num_rows($this->befehl);
if($this->count == 0)
{
$this->befehl = @mysql_query("INSERT INTO `site_counter`(`ip`, `visit`, `online`)VALUES('$this->ip', '".date("Y-m-d", time())."', '".time()."');");
}
else
{
$this->befehl = @mysql_query("UPDATE `site_counter` SET `online` = '".time()."' WHERE `ip` = '".$this->ip."' LIMIT 1");
}
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
public function online()
{
$this->minuten = $minute;
$result = time()-$this->minuten*60;
$this->befehl = @mysql_query("SELECT * FROM `site_counter` WHERE `online` >= '".$result."'");
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
public function heute($tag="")
{
$this->heute = $tag;
$this->befehl = @mysql_query("SELECT * FROM `site_counter` WHERE `visit` = '".$this->heute."'");
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
public function gestern($gestern="")
{
$this->gestern = $gestern;
$this->befehl = @mysql_query("SELECT * FROM `site_counter` WHERE `visit` = '".$this->gestern."'");
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
public function gesamt()
{
$this->befehl = @mysql_query("SELECT * FROM `site_counter`");
if($this->befehl)
{
return $this->befehl;
}
else
{
$this->fehler(mysql_error());
}
}
}
$count = @new counter("SERVER","BENUTZERNAME","PASSWORT", "DATENBANKNAME");
$count->ueberpruefen($_SERVER["REMOTE_ADDR"]);
$count->zaehlen($count->online());
$count->zaehlen($count->heute("".date("Y-m-d", time()).""));
$count->zaehlen($count->gestern("".date("Y-m-d", time()-24*60*60).""));
$count->zaehlen($count->gesamt());
unset($count);
?>
|
|
Wenn evtl. Fehler auftauchen, spricht sie bitte hier an. Auch wenn ihr Verbesserungsvorschläge habt, schreibt sie hier rein. Ich werde sie mir aufmerksam durchlesen und evtl. auch umsetzen wenn sie sinn bringen.
Kommentare
Zurück zur Übersicht
Autor htaccess
|
|
|
|