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 =1 ; 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."";
?>
|
Nur registrierte Mitglieder könnten einen Kommentar schreiben.
Melde dich doch ganz einfach an, es ist kostenlos. :-)
gibt es da auch ein Beispiel?
MfG Hicki