Ankündigung

Einklappen
Keine Ankündigung bisher.

Online Status pruefen?

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Online Status pruefen?

    Hallo,

    erst einmal einen schoenen 4. Advent.
    Also, ich habe folgendes Problem. Ich moechte gern eine User Online Anzeige erstellen. Jetzt, weiss ich nicht. Wie ich das machen soll.... . Uebrlege schon seit Tagen und hab auch sehr viel Google benutzt.

    1 = Online
    2 = Offline

    1. Ueberlgung:
    Mit Mysql. Beim einloggen an die Datenbank den Status auf 1 aendern.
    Dann Pruefen wie viele User den Status 1 haben. Jetzt das Problem dabei
    Wen jetzt jemand das Fenster schliesst, oder eine andere Website aufruft,
    logt er sich nicht automatisch aus. Also das er mir in der Datenbank es
    wieder auf den Staus 0 stellt. Wenn der User ordnungsmaessig auf Logout
    klickt funkioniert es.

    2. Ueberlegung:
    Man kann auch nochmals mit der Datenbank arbeiten und dann mit dem
    Befehl timestamp (), aber dort ist auch mein Problem da weiss ich leider
    nicht, wie ich das anstellen sollte. Dazu faellt mir nichts ein wie ich das
    strukturieren sollte.

    So, ich denke das damit mein Problem eschildert ist.
    Vielleicht ist hier jemand so nett, und hilft mir oder gibt mir Ratschlaege oder Links.

    Mit freundlichen Gruessen
    wolfsmichel

  • #2
    http://aktuell.de.selfhtml.org/artik...ik/useronline/

    Kommentar


    • #3
      In der Datenbank muss es nur einen Zeitstempel geben. Hat sich ein User eingeloggt, muss auf jeder Seite der Zeitstempel in der Datenbank aktualisiert werden.

      Möchte man nun wissen, wer aktuell online ist, macht man folgende Prüfung:

      wenn AktuelleZeit < DBZeitstempel + Frist => User ist online

      Die Frist kann vielleicht 30 Minuten sein. Sollte der User über 30 Minuten lang absolut nichts gemacht haben, gilt er als offline. Sollte er danach wieder irgendetwas anklicken, wird er auf die Login-Seite umgeleitet.

      Kommentar


      • #4
        Hallo,

        danke fuer deine Hilfe coola.
        mmh... jetzt muss ich mal schauen ob ich das hinkriege mit dem Script. (hoffe das ich es hinkrieg)

        Kommentar


        • #5
          Schau mal hier, da ist ein sehr ähnliches Thema angeschnitten worden.,.

          Auto Logout

          Kommentar


          • #6
            So.... ich habe mal etwas probiert und wollte Fragen ob das so richtig ist, oder der Ansatz wenigstens.

            PHP-Code:
            <?php
            $user 
            $_SESSION["username"];

            $timestamp time();
            $datum date("d.m.Y - H:i"$timestamp);
            echo 
            $datum;

            $verbindung2 mysql_connect("localhost""***" "***"
            or die(
            "Verbindung zur Datenbank konnte nicht hergestellt werden"); 
            mysql_select_db("usr_web44_9") or die ("Datenbank konnte nicht ausgewählt werden"); 
             
              if (
            $datum $dbdatum 15)
                {
                  
            $aendern "UPDATE login Set status = '1' WHERE username = '$user'";
                  
            $update mysql_query($aendern);
                }

            ?>

            Kommentar


            • #7
              'status' brauchst du nicht.
              Code:
              Tabelle user:
              id       auto-increment primary-key unsigned not null
              name     varchar(50) not null
              password char(40) not null
              mail     varchar(255)
              stamp    datetime
              password ist SHA1-kodiert, somit immer 40 Stellen lang.

              Abfrage, wer online ist:

              PHP-Code:
              $dt = new DateTime();
              $now $dt->format('YmdHis'); 
              Code:
              SELECT 
                 id, 
                 name, 
                 IFNULL
                 (  
                    $now < DATE_FORMAT(DATE_ADD(stamp,INTERVAL 30 MINUTE),"%Y%m%d%H%i%s"),
                    false
                 ) AS online
                 FROM user
                 LIMIT 0,10;
              Hier werden die ersten 10 User kontrolliert. Sollte man ev. noch dazugeben:

              Code:
              ORDER BY name DESC
              Möchte man nur von 1 bestimmten User wissen, ob er online ist, kommt statt dem ORDER BY hinzu:

              Code:
              WHERE id = $userId
              Loggt sich ein User ein, wird seine ID in $_SESSION eingetragen.
              Nach jeder User-Aktion muss der stamp aktualisiert werden:

              PHP-Code:
              $dt = new DateTime();
              $now $dt->format('Y-m-d H:i:s'); 
              Code:
              UPDATE user
                 SET stamp = "$now"
                 WHERE id = $userId;
              Und beim logout:
              Code:
              UPDATE user
                 SET stamp = null
                 WHERE id = $userId;
              $_SESSION['userId'] muss gelöscht werden.

              Ich hoffe, ich habe jetzt keinen Fehler eingebaut.

              Kommentar


              • #8
                PHP-Code:
                  if ($datum $dbdatum 15
                Von wo bekommst du den Wert $dbdatum ?

                Das + 15, sind das Minuten ? Wenn ja, dann musst du den Timestamp in Sekunden errechnen. 60*15.

                Die Variable '$user' , nicht ungefiltert in die Datenbank schreiben "Sql Injection".

                Kommentar


                • #9
                  Hallo,

                  mmh ich bekomme einen Fehler... weiss da leider nicht weiter

                  PHP-Code:
                  <?php
                  $user 
                  $_SESSION["username"];

                  $timestamp time();
                  $now date("YmdHis"$timestamp);

                  $verbindung mysql_connect("localhost""***" "***"
                  or die(
                  "Verbindung zur Datenbank konnte nicht hergestellt werden"); 
                  mysql_select_db("usr_web44_9") or die ("Datenbank konnte nicht ausgewählt werden"); 


                  $abfrage mysql_query ("SELECT id, name, IFNULL ($now < DATE_FORMAT(DATE_ADD(stamp,INTERVAL 30 MINUTE),"%Y%m%d%H%i%s"),    false) AS online FROM user LIMIT 0,10;");

                  ?>
                  Fehlermeldung:

                  Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/web44/html/Projekt/Community/profilbesuche/test.php on line 12

                  Aso: ehm zu $dbdatum bekomm ich aus der Datenbank, genau die + 15 sollten die Minuten sein

                  Kommentar


                  • #10
                    PHP-Code:
                    $abfrage mysql_query ('SELECT id, name, IFNULL ('.$now.' < DATE_FORMAT(DATE_ADD(stamp,INTERVAL 30 MINUTE),"%Y%m%d%H%i%s"),    false) AS online FROM user LIMIT 0,10;'); 
                    Verwendest du keinen Editor, der Syntax-Highlighting beherrscht?

                    Kommentar


                    • #11
                      Denke nicht... ich benutze Weaverslave

                      Kommentar


                      • #12
                        Kenne ich nicht. Vielleicht solltest du dir einen anderen Editor organisieren. Vielleicht Notepad++
                        Ich geh jetzt schlafen. Gut Nächtle.

                        Kommentar


                        • #13
                          Ja... denn benuzt ich auch oft... aber leider schon zu doll an den anderen gewohnt...



                          Ok... ich danke dir wirklich so oft ch kann lach.... das war jetzt eine arbeit von ca 1 std und ich hab so 2 oder 3 Tage gebraucht.

                          Aendern:

                          Ehmw ie mache ich das jetzt das er mir anzeigt wie viel online sind?
                          nur damit?
                          $abfrage = mysql_query ('SELECT id, username, IFNULL ('.$now.' < DATE_FORMAT(DATE_ADD(stamp,INTERVAL 30 MINUTE),"%Y%m%d%H%i%s"), false) AS online FROM login LIMIT 0,10;');

                          muss da nich noch irgendwas mit echo hin?

                          Kommentar


                          • #14
                            Zitat von wolfsmichel Beitrag anzeigen
                            mmh ich bekomme einen Fehler... weiss da leider nicht weiter
                            Bitte beschäftige dich mit den Grundlagen, dass du wenigstens die Ursache simpler Syntaxfehler selber finden kannst.

                            muss da nich noch irgendwas mit echo hin?
                            Auch hier gilt: http://www.php.de/php-einsteiger/489...nsammlung.html

                            Bitte arbeite erst mal ein Tutorial o.ä. durch, damit dir wenigstens die Basics des Umgangs mit einer MySQL-Datenbank aus PHP heraus bekannt sind.

                            *close*

                            Kommentar

                            Lädt...
                            X