Seite 1 von 1

Bräuchte mal hilfe wegen Counter Einbau

Verfasst: 05.11.2004 02:51
von michaelxxx
Hallo,
ich möchte mir gerne einen User Counter im Forum einbauen.
wollte dafür erst den Last_visit_mod von Niels nehmen, aber der war mir etwas zu umfangreich
und ein einfach externer Counter müsste es ja auch tun, oder?

Habe jetzt diesen hier gefunden:
http://www.php-deluxe.net/class/class.p ... t002.class

Kann mir jemand helfen, wie ich es jetzt schaffe, diesen Counter in die index.php mit einzubauen, so dass dann unten in den Board Stats die Anzeige: Besucher heute: xx, insgesamt: xx mit erscheint.

Die Tabellen in der mysql Datenbank hab ich bereits angelegt.

Wie mache ich das jetzt am geschicktesten?
Wäre für Eure hilfe echt dankbar.

Grüße
Michael

Verfasst: 09.11.2004 20:41
von michaelxxx
nach mal nach oben holen möchte...
weiß keiner rat? :cry:

Verfasst: 10.11.2004 09:52
von blubb0r
du musst die sachen irgendwo in deiner view_online.php einbauen, template variabeln anlegen und die dann in deiner index_body.tpl abrufen

Verfasst: 11.11.2004 00:28
von michaelxxx
ich glaub das wird zu kompliziert für mich... :-?

Verfasst: 11.11.2004 14:17
von blubb0r
hm, dann helf ich dir mal:
in deiner viewonline.php ergänze nach

Code: Alles auswählen

$template->set_filenames(array(
	'body' => 'viewonline_body.tpl')
);
make_jumpbox('viewforum.'.$phpEx);
das:

Code: Alles auswählen

class Counter {
    
    // Hier deklarieren Sie Ihre Einstellungen
    var $my_host    = "localhost";
    var $my_user    = "IhrBenutzername";
    var $my_pass    = "IhrPasswort";
    var $my_db        = "IhreDatenbank";
    // Zeitspanne für user_online
    var $sekunden    = 60;    
    // Einstellungen Ende        
    
    var $ip, $session, $user_online, $user_today, $user_all, $zeit, $zeitspanne, $sql;
    var $db, $connect, $result, $data, $query;
    var $recipent = array();
    var $browsername, $kennung, $os;
    
    function Counter() {
        
        // Session wird gestartet
        @session_start();
        $this->session = session_id();
        // Ermittlung der IP und des HTTP_USER_AGENTen
        $this->ip = getenv("REMOTE_ADDR");
        $this->kennung = getenv("HTTP_USER_AGENT");
        // öffnen der Datenbank
        $this->DB();
        // ermitteln des heutigen Datums
        $this->heute();
        $this->zeit();
        $this->zeitspanne();
        // löschen alter Einträge
        $this->delete_data();
        // prüft ob die IP schon vorhanden ist
        $this->session_vorhanden();
        // ermitteln der User
        $this->user_online    = $this->online_user();
        $this->user_today    = $this->today_user();
        $this->user_all        = $this->all_user();
        // schließen der Datenbank
        $this->DB_close();
    }
    
    function browser() {
        // Browserabfrage
        if (eregi("opera",$this->kennung)) {
            $this->browsername = 'Opera';
        } elseif (eregi("netscape",$this->kennung)) {
            $this->browsername = 'Netscape';
        } elseif (eregi("msie",$this->kennung)) {
            $this->browsername = 'IE';
        } elseif (eregi("mozilla",$this->kennung)) {
            $this->browsername = 'Mozilla';
        } elseif (eregi("konqueror",$this->kennung)) {
            $this->browsername = 'Konqueror';
        } elseif (eregi("lynx",$this->kennung)) {
            $this->browsername = 'Lynx';
        } elseif (eregi("galeon",$this->kennung)) {
            $this->browsername='Galeon';
        } else {
          $this->browsername = 'other';
        }
        return ($this->browsername);
    }
    
    function os() {
        // OS - Abfrage
        if (eregi("Linux",$this->kennung)) {
            $this->os = 'Linux';
        } elseif (eregi("Win",$this->kennung)) {
            $this->os = 'Windows';
        } elseif (eregi("Mac",$this->kennung)) {
            $this->os = 'Mac';
        } elseif (eregi("BSD",$this->kennung)) {
            $this->os = 'BSD';
        } elseif (eregi("Amiga",$this->kennung)) {
            $this->os = 'Amiga';
        } elseif (eregi("Sun",$this->kennung)) {
            $this->os = 'Sun';
        } elseif (eregi("IRIX",$this->kennung)) {
            $this->os = 'IRIX';
        } elseif (eregi("BeOS",$this->kennung)) {
            $this->os = 'BeOS';
        } elseif (eregi("OS/2",$this->kennung)) {
            $this->os = 'OS/2';
        } elseif (eregi("AIX",$this->kennung)) {
            $this->os = 'AIX';
        } else {
            $this->os ='other';
        }
        return ($this->os);
    }
    
    // stellt die Verbindung her und generiert bei Misserfolg die Fehlermeldung
    function DB() {
        $this->connect = @mysql_connect($this->my_host, $this->my_user, $this->my_pass);
        if (!$this->connect) {
            die($this->DB_Error());
        }
        $this->db = mysql_select_db($this->my_db, $this->connect);
        if (!$this->db) {
            die($this->DB_Error());
        }
    }
    
    // generiert die Fehlermeldung
    function DB_Error() {
        echo "Fehlernummer: ".mysql_errno()."<br />\n";
        echo "Fehlertext: "  .mysql_error()."<br />\n";
    }
    
    // sql - query
    function DB_query($sql) {
        return ($this->result = mysql_query($sql));
    }
    
    // ermittelt die Anzahl der Datensätze
    function DB_numrows() {
        return (mysql_num_rows($this->result));
    }
    
    function DB_array() {
        while ($row = mysql_fetch_object($this->result)) {
            array_push($this->recipent,$row);
        }
        return ($this->recipent);
    }
    
    // schließt die Datenbank
    function DB_close() {
        mysql_close($this->connect);
    }
    
    //  ermittelt die Zeit
    function zeit() {
        return ($this->zeit = time());
    }
    
    // Festlegung der Zeitspanne
    function zeitspanne() {
        return ($this->zeitspanne = $this->zeit-$this->sekunden);
    }
    
    // ermittelt die Zeit von Heute
    function heute() {
        return ($this->heute = mktime(0, 0, 0, date ("m") , date ("d"), date("Y")));
    }
    
    // prüft ob die Session schon vorhanden ist
    function session_vorhanden() {
        $this->DB_query("select session from besucher where session='$this->session'");
        $this->DB_array();
        foreach ($this->recipent as $session) {
            $session_vorhanden = $session->session;
        }
        // die Session ist noch nicht vorhanden :: die Funktion write_data() wird aufgerufen
        if (!$session_vorhanden) {
            $this->write_data();
        } else {
            // die Session ist schon vorhanden :: die Funktion updata_data() wird aufgerufen
            $this->update_data();
        }
    }
    
    // schreibt die Besuchzeit in die Datenbank
    function write_data() {
        $this->browser();
        $this->os();
        return ($this->db_query("insert into besucher (ip,session,browser,os,besuch_zeit) values
        ('$this->ip','$this->session','$this->browsername','$this->os', '$this->zeit')"));
    }
    
    // löscht alle Datensätze die älter als die Zeitspanne sind
    function delete_data() {
        return ($this->db_query("delete from besucher where besuch_zeit < '$this->heute'"));
    }
    
    // die Datensätze werden geupdatet
    function update_data() {
        return ($this->DB_query("update LOW_PRIORITY besucher
        set besuch_zeit='$this->zeit' where session='$this->session'"));
    }
    
    // Ermittlung aller User die gerade online sind
    function online_user() {
        $this->DB_query("select besuch_zeit from besucher where besuch_zeit > '$this->zeitspanne'");
        return ($this->DB_numrows());
    }
    
    // Ermittlung aller User von Heute
    function today_user() {
        $this->DB_query("select besuch_zeit from besucher where besuch_zeit > '$this->heute'");
        return ($this->DB_numrows());
    }
    
    // Ermittlung aller User
    function all_user() {
        $this->DB_query("select max(besucher_id) as besucher_id from besucher");
        $this->DB_array();
        foreach ($this->recipent as $all) {
        }
        return ($this->user_all = $all->besucher_id);
    }
}
$online = new Counter();
ergänze dann vor

Code: Alles auswählen

'L_WHOSONLINE' => $lang['Who_is_Online'],
das:

Code: Alles auswählen

'USER_ONLINE' => $online->user_online,
'USER_TODAY' => $online->user_today,
'USER_ALL' => $online->user_all,
ergänze dann in deiner templates/dein_template/index_body.tpl irgendwo

Code: Alles auswählen

{USER_ONLINE} User online.<br>
{USER_TODAY} User heute.<br>
{USER_ALL} User gesamt.
dann müsste das funktionieren. schreibe einfach noch mal wenn nicht.

blubb0r

Verfasst: 12.11.2004 13:14
von michaelxxx
Hallo blubb0r,
danke erst mal für die Hilfe.
Leider hat das so jetzt aber noch nichtgeklappt. Bis jetzt schreib er noch keine Daten in die Datenbank. PM hab ich Dir geschickt.

Vielleicht kannst Du ja nochmal schauen?

Viele Grüße
Michael