Daten löschen wenn BRowser geschlossen wird ?

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

  • Daten löschen wenn BRowser geschlossen wird ?

    Hallo
    Kleines Problem.

    Ich habe ein Log-In und ein Log-Out Script.
    Beim Log-In werden $user_id, $user_name und $hide_online in eine mySQL-Datenbank geschrieben.
    Beim Log-Out werden diese Daten gelöscht. Dies geschieht allerdings nur wenn sich der User manuell ausloggt.
    Wie bringe ich es fertig daß die Daten gelöscht werden sobald der USer die Seiten verlässt, also die Sitzung schliesst ?
    Geht das nur über Sessions, oder wie mache ich das ?
    Die Daten sollen auf jeden Fall gelöscht werden, unabhängig davon ob der User manuelle ausloggt, oder einfach den Browser schliesst.
    Hoffe ihr könnt mir helfen
    [font=comic sans ms]ups, never mind,
    it´s just me[/font]

  • #2
    kannst beim schließen ein neues fenster öffnen lassen, was das alles macht, muß halt nur die werte mit übergeben, damit das neue fenster weis, was es zu löschen hat und danach läßt du es über javascript auch wieder schließen!

    gruss

    Kommentar


    • #3
      q: und wie mach ich das mit dem "wenn das Fenster geschlossen wird"?
      a: Schau mal in selfhtml - JavaScript/DOM->Sprachelemente->Event-Handler->onUnload. Mußt nur vor dem window.open nachprüfen, ob das aktuelle Fenster geschlossen wird oder nicht: if (this.window.closed) window.open (...)

      Hoffentlich funktioniert´s!
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        hmmm...
        Leider kann ich den onunload nicht benutzen, weil ich das ja dann in jede Seite bzw. jedes Script einbinden müsste.
        Da das Projekt aus vielen Scripten besteht, und ich ja keine Kontrolle drüber habe auf welcher Seite, bzw. wo der User aussteigt, wäre das etwas kompliziert zu realisieren.
        Geht das nicht irgendwie mit Sessions oder so ?
        Wie gesagt, beim Log-in, den man betätigen muß um die Seiten in vollem Umfang zu nutzen, werden USer ID, User Name, usw. automatisch in eine "online"-Tabelle geschrieben.
        Verlässt der USer die Seiten ohne vorher auszuloggen, müssen diese Daten aus der "online" Tabelle gelöscht werden. Aber wie ?

        Das ist so ähnlich wie bei einigen Foren. Der User muß aus der "who´s online"-Liste verschwinden.
        [font=comic sans ms]ups, never mind,
        it´s just me[/font]

        Kommentar


        • #5
          Original geschrieben von Raphael 69
          hmmm...
          Leider kann ich den onunload nicht benutzen, weil ich das ja dann in jede Seite bzw. jedes Script einbinden müsste.
          Da das Projekt aus vielen Scripten besteht, und ich ja keine Kontrolle drüber habe auf welcher Seite, bzw. wo der User aussteigt, wäre das etwas kompliziert zu realisieren.
          hmmm... wenn etwas bzw. eine funktion auf jeder seite zu erreichen sein soll wirst dus immer auf jeder seite einbinden müssen - schreibs halt bei irgendeinem file, dass du ohnehin per include dabei hast mit rein.
          Geht das nicht irgendwie mit Sessions oder so ?
          nein - serverseitig geht da gar nix - wie auch?
          http-requests stellen keine dauerhaften verbindungen her - der browser schickt seinen request auf port 80, der server schickt das ergebnis (im besten fall eine website) auf einem anderen port zum browser zurück. verbindung ende.
          ein neuerlicher http-request mit dem inhalt "ich geh jetzt" würde wohl nur virtuelles achselzucken beim server auslösen - frei nach dem motto "wer bist denn du?"
          Wie gesagt, beim Log-in, den man betätigen muß um die Seiten in vollem Umfang zu nutzen, werden USer ID, User Name, usw. automatisch in eine "online"-Tabelle geschrieben.
          Verlässt der USer die Seiten ohne vorher auszuloggen, müssen diese Daten aus der "online" Tabelle gelöscht werden. Aber wie ?

          Das ist so ähnlich wie bei einigen Foren. Der User muß aus der "who´s online"-Liste verschwinden.
          tja siehe oben.
          i.d.r. löst man das, indem man einen timestamp in eine datenbank einträgt - und zwar bei jeder bewegung des users innerhalb einer session - user, die sich eine gewisse zeit lang nicht mehr "bewegt" haben werden gelöscht und sind somit nicht mehr online.
          dazu gibts im forum etliche beiträge - versuchs mal mit dem Suchbegriff "wer ist online"

          Kommentar


          • #6
            Hallo!

            Sauber ist es, wenn du ein Feld online und einen Timestamp expires in der DB zum Login mitabspeicherst. Du gibst zum Beispiel jedem 6 Minuten, bevor er rausfliegt.

            Code:
            $t************pires = strftime("%Y%m%d%H%M%S", time() + 60 * 6);
            Wenn du wissen willst, wie viele User online sind, lässt du vorher eine Abfrage drüber laufen:

            Code:
            UPDATE tabelle
               SET online = '0'
             WHERE expires <= NOW()
            Und wenn ein Benutzer die Seite wechselt, gibst du ihm wieder 6 Minuten.

            Den Benurtzer erkennst du am einfachseten per Cookie.

            Mit dieser Methode arbeiten fast alle. Es handelt sich bei TCP/IP eben um ein verbindungsloses Protokoll.

            Ciao,
            Denis

            Kommentar


            • #7
              Vielen Dank
              Das werd ich ausprobieren
              [font=comic sans ms]ups, never mind,
              it´s just me[/font]

              Kommentar

              Lädt...
              X