PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

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

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» MySQL schreibt anstatt ä das: ä

» Adressbuch erweitern.

» Wie überschreibt man Text ?







© PHP-Einfach.de 2003 - 2012