Tutorials

MySql Besuchercounter Tutorial

Einloggen
Benutzername:
Passwort:

Passwort vergessen?
Kostenlos
Anmelden
anzeigen
MySql Besuchercounter


3839 - Sniper - 08.04.2006 18:56 Uhr - Version: 1 - - verlinken als BB-Code


Diesen Counter habe ich geschrieben, da mein alter Textbasierter bei starken Seitenbesuchen überlastet war.

Um den Counter benutzen zu können müsst ihr zunächst in eurer MySQL Datenbank eine ensprechende Tabelle anlegen. Das macht ihr z.B. über PhpMyAdmin mit diesem Code.


1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `counter` (
`ips` TEXT NOT NULL ,
`counter` INT( 32 ) NOT NULL ,
`today` INT( 32 ) NOT NULL ,
`yesterday` INT( 32 ) NOT NULL ,
`record` INT( 32 ) NOT NULL ,
`date_now` INT( 10 ) NOT NULL ,
`online` TEXT NOT NULL
);
INSERT INTO `counter`(`ips`,`counter`,`today`,`yesterday`,`record`,`date_now`, `online`)
VALUES('','0','0','0','0','0','');


Jetzt zum Counter. Erstellt eine neue PHP Datei und füllt sie mit folgendem Code...

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
<?
//Config Start

//Mysql Connection
mysql_connect("localhost","benutzername","passwort");
mysql_select_db("datenbank_name");

$days = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"); 

//Ausgabe des Aktuellen Tages
$this_day "Heute ist ".$days[date("w",time())];

$online_session 15//Wie lange soll der benutzer als online gelten?
$ip_counts 500//Wie viele IPS sollen gespeichert werden? -
//sollte auf gut besuchen Seiten etwa das dreifache der Besucherzahl sein sein
//End Config

$query mysql_query("SELECT * FROM $table");
//Daten für den counter erstellen
$read mysql_fetch_object($query);
    if(
is_array(@unserialize($read->ips))){
        
$ips unserialize($read->ips);
    }
    else{
        
$ips = array();
    }
    if(
is_array(@unserialize($read->online))){
        
$online unserialize($read->online);
    }
    else{
        
$online = array();
    }
    
$counts = array(
        
$ips,
        
$read->counter,
        
$read->today,
        
$read->yesterday,
        
$read->record,
        
$online,
        
$read->date_now
    
);
if(
date("Ymd",$counts[6]) < date("Ymd",time())){ //Zähler zurücksetzen
    
mysql_query("UPDATE $table SET date_now='".time()."', today='0', yesterday='".$counts[2]."', ips=''");
//Datum aktualisieren und Werte von Gestern setzen sowie Counter zurücksetzen
    
$counts[0] = array(); //IP Array löschen, sodass counter neugestartet wird
    
$counts[2] = 0;
}
//zählen.... und hinzufügen...
foreach($counts[0] as $ip){ //Schon gezählt worden?
    
if($ip == $_SERVER['REMOTE_ADDR']): $end 1; endif;
}

if(
$end != 1){ //User wurde noch nicht gezählt -> hinzufügen in die Datenbank...
    
if(count($counts[0]) < $ip_counts){
        
array_push($counts[0], $_SERVER['REMOTE_ADDR']); //Ip an das Ende des Arrays hinzufügen hinzufügen
    
}
    else{
        
array_shift($counts[0]);
        
array_push($counts[0], $_SERVER['REMOTE_ADDR']);
    }
        
mysql_query("UPDATE $table SET ips='".serialize($counts[0])."'");//counts einfügen
    //Counter
    
if($counts[2] < $counts[4]){
        
mysql_query("UPDATE $table SET today='".($counts[2]+1)."', counter='".($counts[1]+1)."'");//counts einfügen
    
}
    else{
        
mysql_query("UPDATE $table SET today='".($counts[2]+1)."', counter='".($counts[1]+1)."', record='".($counts[4]+1)."'");//counts einfügen
    
}
}
//Online verarbeitung

foreach($counts[5] as $key => $value){
    if(
$value time()-$online_session*60): $arr_on[$key] = $value; endif;
    if(
$key == $_SERVER['REMOTE_ADDR']): $arr_on[$key] = time(); $end_online =; endif; //Onlinesession auffrischen...
}
$counts[5] = $arr_on;
//Wenn keine online Session aufgefrischt wurde, so ist der User noch nicht als 
//online markiert -> Als online markieren...
if($end_online != 1){
    
$counts[5][$_SERVER['REMOTE_ADDR']] = time(); //Eintragen der Online-Besucher
}
//Online count in Datenbank schreiben...
mysql_query("UPDATE $table SET online='".serialize($counts[5])."'");
//Wie viele sind nun online?...
$online_users count($counts[5]);

$query mysql_query("SELECT * FROM $table");
$read mysql_fetch_object($query);

//Ausgabe
    
echo "".$this_day." | Online: ".$online_users." | Heute: ".$read->today." ";
    echo 
"| Vortag: ".$read->yesterday." |"
    echo 
"Tagesrekord: ".$read->record." | Gesamt: ".$read->counter.""
?>


Mitglieder-Kommentare


#3 von Hicki
Hallöchen,

gibt es da auch ein Beispiel?

MfG Hicki
#2 von BlaXXuN
Der Code hat einen klitzekleine Fehler bzw fehlt was wichtiges Smily NR:7

Du hast die Variable $table noch nicht definiert.
Also für den Rest einfach nach dem Mysqlconnect folgendes einfügen:
$table = "counter";

So funzt der Counter dann auch Smily NR:8 Super Arbeit Sniper
#1 von BlaXXuN
Der Code hat einen klitzekleine Fehler bzw fehlt was wichtiges Smily NR:7

Du hast die Variable $table noch nicht definiert.
Also für den Rest einfach nach dem Mysqlconnect folgendes einfügen:
$table = "counter";

So funzt der Counter dann auch Smily NR:8 Super Arbeit Sniper

Nur registrierte Mitglieder könnten einen Kommentar schreiben.

Melde dich doch ganz einfach an, es ist kostenlos. :-)