Ankündigung

Einklappen
Keine Ankündigung bisher.

wer ist online script...?!?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wer ist online script...?!?

    Hallo ich bräuchte mal einen kleinen Denkansoss... habe ein login scipt das auf sessions basiert. nu will ich mir ein script basteln wo jeder sehen kann wer angemeldet ist... ich dachte zuerst das ich mir in die usertabelle eine spalte mache mit "login = 0 oder 1" und dann darauf abfrage...

    aber kann man evtl auch über die session sehen wer online ist... ? also was ich meine ist... wenn sich einer einloggt dann schreibt der webserver ja in ein temp. verzeichniss was rein...

    wäre lieb wenn mir da einer einen rat geben könnte...

    mfg m4c4br3


  • #2
    Mit Hilfe der Temporären Dateien wirst du sicher nicht herausfinden können, wer gerade online ist.

    Die Idee mit dem Online =1/0 war schon nicht schlecht.

    Ich würde ein Feld in die Datenbanktabelle inbauen, in dem der Timestamp der letzten Aktion geschrieben wird. Dann abfragen, ob innerhalb der letzten 300 Sekunden (5 Minuten) eine Aktion des Users registriert wurde. Wenn ja: Online anzeigen. Wenn nein: Offline anzeigen. Zusätzlich würde ich noch das Feld "Loggedout" einbauen. Wenn er sich einloggt wird das Feld auf 0 gesetzt. Loggt er sich aus, wird es demnach mit einer 1 gefüllt.

    Gruß, Manuel.

    Kommentar


    • #3
      danke für denn tip...

      Danke für den Tipp... Login / logout buttons hab ich... nur klickt nicht jeder usrt immer auf den logout button um sich aus zu loggen sonder schliesst einfach das fenster.... Könntest du mir evtl auch ein kleines beispiel geben wegen dem timestamp und den 300 sec... ?

      Danke

      Kommentar


      • #4
        Code:
        mysql_query("DELETE FROM online_users WHERE timestamp < (time() - 300) ");
        mysql_query("SELECT * FROM online_users");

        Kommentar


        • #5
          genau so geht es.
          oder:
          http://tut.php-q.net/online.html

          bitte auch lesen:
          http://www.dclp-faq.de/q/q-code-user-online.html
          privater Blog

          Kommentar


          • #6
            Hi,

            das würde doch dann auch so gehen oder ?

            Code:
            mysql_query("UPDATE online_users SET status="1" WHERE timestamp < (time() - 300) "); 
            mysql_query("SELECT * FROM online_users");
            Japp .. oder

            Kommentar


            • #7
              Wenn, dann
              Code:
              mysql_query("UPDATE online_users SET status='1' WHERE timestamp < (time() - 300) "); 
              mysql_query("SELECT * FROM online_users WHERE status != '1'");
              Aber dann haste da ja lauter uralte Einträge in deiner DB rumfahren.

              Kommentar


              • #8
                Hmmm , japp zweite zeile hast recht ...

                gut da hab ich wieder am Text gesparrt ... ich hätte das Feld halt
                direkt in die user table und eben dort nur immer upgedatet ...

                so war mein vorschlag gemeint sry

                Kommentar


                • #9
                  Ich noch mal....

                  Hallo habe es so eingebaut.... in der datenbank wird auch der timestamp geschrieben... nur bei der sql abfrage kommt folgender fehler:

                  You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '() - 300' at line 1

                  und so sieht meine abfrage aus :

                  Code:
                  mysql_query("UPDATE user SET status = 'offline' WHERE timestamp < (time() - 10)") or die ("fehler: " .mysql_error() );
                  kann mit bitte einer helfen ?

                  mfg m4c4br3

                  Kommentar


                  • #10
                    habe den syntax fehler schon mal selber gefunden... nur die die anweisung funzt irgendwie nicht...

                    hab mir in meiner user tabelle eine spalte die heisst stempel mit (timestamp) formatiert... sobald sich ein user einloggt schreibt er auch die aktuelle zeit darein... nur wenn ich dann auf die seite klicke (whoison.php) ändert er nicht den wert von 'online' in 'offline'... und ich weiss nicht warum

                    hier noch mal der code in der whoison.php :

                    Code:
                    $stempel = (time() - 10);
                    mysql_query("UPDATE user SET status = 'offline' WHERE stempel < '$stempel'") or die ("fehler: " .mysql_error() );

                    Kommentar


                    • #11
                      Keine Ahnung ob es hilft, aber mach mal die Anführungszeichen um das $stempel weg.

                      Kommentar


                      • #12
                        Bestimmt hast du in deiner Datei ERST den Code um den Timestamp in die Datenbank zu schreiben und anschließend erst den Code um abzufragen ob der User noch online ist. *g* Verstehst du was ich meine?

                        Also:

                        1.- Timestamp aktualisieren
                        2.- Abfragen ob Eingeloggt

                        Dann kann es logischerweise nicht funktionieren.

                        Kommentar


                        • #13
                          also der timestamp wird nur einmal aktualisiert... und zwar dann wenn sich der user einloggt das geschieht in einer ganz anderen datei (nennt sich bei mir sucsess.php mit welcome message und so w.). die abfrage ob der timestamp schon zu alt ist passiert in der datei wo der user aufruft um zu gucken wer alles online ist (whoison.php). Habe auch in der datenbank nachgeguckt... der wert (timestamp) wird beim einloggen geschrieben und bleibt auch unverändert wenn ich auf whoison.php klicke. wenn ich 10 sec später wieder darauf klicke passiert nichts($stempel zum testen auf 10 sec. gesetzt).

                          Was kann da los sein ???

                          Kommentar


                          • #14
                            thread kann geschlossen werden... hab den fehler gefunden...

                            es lag daran das ich dem feld in der datenbank das attribut 'timestamp' gegeben hatte... dabei kam ein ganz anderer wert zusammen als bei time() ....

                            Danke für die zahlreichen vorschläge

                            Kommentar

                            Lädt...
                            X