kostenloser Webspace werbefrei: lima-city


Beim Schließen einer Seite Wert aus Tabelle löschen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Hallo.
    Ich habe ein Login Formular für Gaste, wo man nur einen Spitznamen angeben muss. Wenn man auf "Login" klickt wird der Spitzname in eine Tabelle in einer Datenbank geschrieben. Das mache ich, damit anschließend beim nächsten Gast kontrolliert werden kann, ob der Spitzname bereits vergeben ist.

    Wenn der Gast die Seite verlässt soll der Name wieder aus der Datenbank gestrichen werden, damit später ein weiterer Gast den Namen wieder verwenden kann.

    Der Name des Gastes wird gleichzeitig in der Variable $_SESSION['spitzname'] gespeichert. Könnte man die Variable verwenden, um diesen Namen wieder aus der Datenbank zu löschen, wenn die Seite verlassen wird?

    Wäre froh wenn mir jemand helfen könnte.

    Liebe Grüße
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. wenn der Gast brav den logout-Knopf drückt, kannst du natürlich eine funktion hinterlegen, die ein select auf die ID des Users in der DB macht und den User dann löscht und dann die session platt macht... aber nciht jeder drückt den knopf, von daher solltest du eine alterung einbauen, dass du sagst: timestamp und wenn nach 300 sekundne keine aktion, kill den automatisch raus...
  4. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Ok danke die Idee ist mir grad auch gekommen. Ich beschäftige mich leider erst seit ein paar Tagen mit MySQL. Wäre cool wenn du mir etwas helfen könntest. Also muss ich in meiner Tabelle eine neue Spalte "zeit" anlegen. Diese sollte dann vom Typ "Timestamp" sein richtig? Muss ich da dann noch etwas bei den Einstellungen beachten?

    Wie sieht denn dann der Code aus, um den Namen automatisch nach 5 min Inaktivität zu löschen? Wäre echt cool wenn mir jemand helfen könnte.
  5. genau, du bräuchtest einen Timestamp in der spalte. Zudem solltest du die Gast-User-Tabelle separat zu den usern führen, die sich permanent anmelden.

    Generell ist es ganz einfach:

    jedes mal, wenn irgendein user die PHP-file aufruft und sei es ein automatischer Ajax Upload, müsstest du den Timestamp des jeweiligen Users neu überschreiben. mit einer weitern Query prüfst du, ob irgendein Timestamp in der spalte timestamp kleiner als aktueller Timestamp - 300(5 minuten) ist.

    dann bekommst du eine liste aller leute, die einen abgelaufenen timestamp haben und fütterst diese liste in deine delete-funktion einzeln ein.


    an sich funktioniert das, weil zig user gleichzeitig on sind und regelmäßig das ausführen. und wenn keiner on ist, wird der eintrag lange zeit nicht gelöscht, aber sobald der erste rein kommt, wird der eintrag wieder gelöscht(wenn mehr als 5 minuten seit dem letzten besucher vergangen sind...)


    wäre mein Lösungsvorschlag dafür. ist zwar nciht der eleganteste, aber ein funktionierender Anfang...
  6. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Danke für deine Antwort. Aber wie gesagt ich beschäftige mich noch nicht lange genug mit MySQL um das umsetzen zu können ;) Könntest du deine Idee in ein Code umwandeln? Wäre echt super.
    Gruß
  7. ich kann dir den Select auf die abgelaufenen Timestamps geben, allerdings mit allgemeinen angaben, da ich deine datenbankstruktur nicht kenne...

    SELECT `ID`
    FROM `Tabelle_mit_temp_usern`
    Where `timestamp` > 'time()+500';
    
    ;
    ;


    das time()+500 muss als PHP code ausgeführt werden. das SQL Statement wird dir eine Liste sämtlicher Abgelaufener Datensätze ausspucken, die du dann einzeln in einer while-Schleife an eine Delete-Funktion verfütterst. für den Rest benutze bitte google, sonst ist für dich der lerneffekt 0 wenn ich dir das Ding fertig vorkaue und bezahlt werde ich auch nicht dafür... es gibt gute SQL-tutorials, die einfach beschreiben, wie man das macht...


    gruß,

    sebulon
  8. Hallo,
    sebulons Idee ist zwar die, die ich auch gegeben hätte, aber eine Ergänzung habe ich schon noch. Ich weiß nicht genau wie die Funktion heißt, aber ich weiß das es sie Gibt. Ich meine eine Javascript Funktion, die oftmals eine Meldung anzeigt wie:
    Möchtest du die Seite wirklich verlassen?

    Und man kann dann mit JA oder NEIN antworten. Ich weiß nicht genau, aber es müsste doch gehen, dass man daraufhin eine Benutzer-Löschen Funktion startet. Es gäbe zwar den Nachteil, dass bei deaktiviertem Javascript nichts passieren würde, aber wenn man die Seite erst durch Javascript anzeigt, dann werden die meisten Leute das Häckchen setzen für "Javascript aktivieren".
    MFG THWBM
  9. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Ja das hört sich auch gut an. Weiß jemand wie genau das geht?
  10. das ist der Javascript Befehl alert.

    Nur ob dann auch noch die SESSION besteht, wenn er nein geklickt hat ist fraglich. Da müsste man im Javascript Teil, dann auch gleich die SESSION Variablen mit speichern, die man benötigt. Und speichere die SESSION ID mit, denn die ist auf jeden Fall eindeutig.

    Allerdings kann es doch gar nicht mit javascript laufen, denn das ist Clientseitig. Sobald der User auf das X in seinem Browser klickt ist die Seite weg, egal ob Javascript oder nicht. Also auch keine Interaktion mehr.

    Musst wohl im Hintergrund einen Cron laufen lassen, wie sebulon es beschrieben hat und dann die entsprechenden Datensätze löscht.
  11. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    all-in1 schrieb:
    das ist der Javascript Befehl alert.

    Nur ob dann auch noch die SESSION besteht, wenn er nein geklickt hat ist fraglich. Da müsste man im Javascript Teil, dann auch gleich die SESSION Variablen mit speichern, die man benötigt. Und speichere die SESSION ID mit, denn die ist auf jeden Fall eindeutig.

    Allerdings kann es doch gar nicht mit javascript laufen, denn das ist Clientseitig. Sobald der User auf das X in seinem Browser klickt ist die Seite weg, egal ob Javascript oder nicht. Also auch keine Interaktion mehr.
    Du hast es wohl nicht ganz verstanden… das Alert wird von der Webseite bei einem bestimmten Event ausgelöst, und zwar dann, wenn der User die Seite verlassen mag. Bei diesem Event könnte aber genauso gut ein AJAX-Request an die Webseite geschickt werden die die gewünschte Aktion am Server ausführt. Die Session-ID oder sonst was brauchst du in JavaScript garnicht, denn um das entsprechende Cookie kümmert sich der Browser bereits von alleine.

    Wenn du ein Tab oder die Seite schließt kann JavaScript dies sehrwohl verhindern. Das kannst du auch ganz einfach selbst ausprobieren: Logg dich bei GMail ein, erstelle ein Mail mit ein paar Zeichen Inhalt und schließ das Browserfenster / den Tab…
  12. Javascript ist eben nicht ganz mein Fall. Ich hätte es eben in PHP gelöst.
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!