Ergebnis 1 bis 1 von 1

Thema: Onlinestatus überprüfen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Onlinestatus überprüfen

    Tagchen

    Ich bin gerade dabei, einen kleinen Chat zu programmieren ... bei dem die grundlegenden Dinge auch schon funktionieren. Nun brauche ich ein Skript, dass irgendwie überprüft, ob ein User nun online ist oder nicht. Dafür habe ich bisher in die Output-Datei, in der sich während einer while-Schleife immer wieder die Abfrage neuer Nachrichten wiederholt, einen MySQL-Befehl eingefügt, der jede Sekunde einen Timestamp in der Datenbank aktualisiert. Ein anderes Script schaut dann alle zehn Sekunden, wo dieser Timestamp seit zehn Sekunden nicht mehr aktualisiert wurde und stempelt den User dann als offline ab. Der Teil der Output-Datei sieht dann so aus ...

    PHP-Code:
    while (== 2// Nicht so pr0, ich weißt >_>
    {
        
    $time time();
        
    mysql_query ('UPDATE `chat_users` SET `lastactive` = "'.$time.'" WHERE `user` = "'.$_COOKIE['chat_logged_as'].'"');

        
    $select mysql_query ('SELECT `ID` FROM `chat_messages` ORDER BY `ID` DESC LIMIT 1');
        while (
    $row mysql_fetch_array ($select))
        {
            
    $aktuelleposition $row[0];
        }

        if (
    $position $aktuelleposition)
        {
            
    $select mysql_query ('SELECT `msg`, `user`, DATE_FORMAT(`zeit`, "%H:%i") FROM `chat_messages` WHERE `ID` > "'.$position.'"');
            while (
    $row mysql_fetch_array ($select))
            {
                
    $msg $row[0];
                
    $user $row[1];
                if (
    $user == '')
                {
                    
    $user 'Öhm ... niemand v.v';
                }
                
    $zeit $row[2];
                echo (
    '['.$zeit.'] '.$user.' &raquo; '.$msg.'<br />
    '
    );
            }
        }
        else
        {
            
    $egal true;
        }
        
    $position $aktuelleposition;
        
    flush();
        
    sleep(1);

    Problem hierbei: Der Timestamp wird auch dann aktualisiert, wenn ich das Script gar nicht geöffnet habe, selbst wenn ich den PC neustarte läuft das Ganze immernoch. Hat das evtl. was mit den Cookies zu tun? Sonst wüsst ich irgendwie keine Antwort ... Ich hatte es auch mal mit while (!connection_aborted) versucht, brachte aber genau so wenig. Joar ... könnte mir wer sagen, woran das liegt, dass es dennoch aktualisiert wird, oder mir eine elegantere Variante der Onlinestatus-Überprüfung (ich bin mir fast sicher dass es eine gibt, kenn mich aber leider z.B. mit Sessions nicht so aus ...) verraten? Wäre echt schnieke von euch ^^" Mal danke im Vorraus : )

    [edit] Hab mich jetzt mal ein klein wenig mit Sessions auseinandergesetzt und die dann auch anstelle der Cookies verwendet ... aber sobald ich auch nur ein session_start(); an den Anfang der Datei schreib, weigert sich mein Browser strikt, diese aufzurufen ._.

    Geändert von Tomarus (05.02.2005 um 12:38 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •