onunload??
-
Hallo leute
ich bin gerade dabei mit einem freund ein browsergame zu schreiben und wir haben folgendes problem: wir wollen das wenn man den browser schließt oder auf eine andere seite geht, ausgeloggt wird... wir haben da eine funktion, das is auch nicht das problem aber wo und wie sollten wir die funktion aufrufen??
danke
mfg saroll
-
vergiss es - so funktioniert es nicht und du nervst die besucher damit nur.
ausloggen geht am besten mit einer session die ein vernuenftiges timeout hat.
-
und was würdest du für einen timeout nehmen??
-
Saroll schrieb:
und was würdest du für einen timeout nehmen??
Hängt davon ab. Teste mal wie lange du ungefähr bei diesem Spiel nichts tust (weil du irgendwelche Texte liest, oder mit jemanden chattest).
Generell denke ich, dass gerade bei Browsergames die Teamwork verlangen ein Timeout relativ hoch sein sollte (30-50 Minuten). Denn man bespricht sich zwischendurch mit anderen Spielern, usw.
Wenn es ein Spiel ist, wo man eher alleine spielt, kann man das Timeout auch kürzer setzen (so etwa 20 Minuten).
Im zweifelsfall setze das Timeout lieber etwas höher - denn du willst die Spieler ja nicht nerven.
alternativ können die spieler die um die sicherheit besorgt sind ja auch den logout button clickenso hat man komfort für die faulen und sicherheit für die die es wollen.
-
danke!!
aber ich versteh nicht wieso es die spieler nerven sollte wenn sie automatisch bei fensterschließen ausgeloggt werden??mfg saroll
-
Saroll schrieb:
aber ich versteh nicht wieso es die spieler nerven sollte wenn sie automatisch bei fensterschließen ausgeloggt werden??
Das 'Problem' ist, dass du nicht einfach ausloggen kannst - sondern ein neues Fenster öffnen musst um PHP/Perl/whatever code auszuführen. Und genau dieses Fenster ist doof. Denn es gibt nichts schlimmeres als wenn man ein Fenster schließt und sich ein neues Fenster öffnet.
Mal abgesehen davon, dass man heutzutage sowieso fast überall PopupBlocker hat...
Wenn du das ausloggen aber ohne ein neues Fenster zu öffnen schaffst: dann mach es. es ist ein wirklich tolles feature.
-
*gg* das is ja mein problem... ich wüsste nicht wo ich es auszuführen hätte, im index geht es nicht, weil das fenster dann weg is und der code dann nicht mehr ausgeführt wird... und was ist wenn man das fenster gleich wieder schließt?? wird durch einen popupblocker der code geblockt oder das ganze fenster erst garnicht aufgemacht oder wie funkt so'n ding??
danke mfg saroll
-
Lass es einfach und nimm einen Timeout - es wird eh nie zuverlässig funktionieren.
Wenn das Popopup geblockt wird wird sicher auch kein Code daraus ausgeführt
-
Das Fenster wird normalerweise geöffnet und sofort wieder vom Popup-Blocker geschlossen. Evtl., wenn der Blocker direkt im Browser integriert ist, wird das Fenster erst gar nicht geöffnet.
Im Endeffekt läuft es aber immer auf das gleiche hinaus. Die Seite, die ausgeführt werden sollte (z. B. zum Ausloggen), wird entweder nicht oder nicht vollständig ausgeführt. Du kannst dir also nie sicher sein, dass das Ausloggen auch richtig funktioniert hat. Daher ist auch ein Timeout nötig, wie Shade schon vorgeschlagen hat.
-
jaaa *gg*
das nette moderatorenteam hat recht *gg*ich habs ja von anfang an gesagt aber mein kumpel hat auf das schließen-ausloggen bestanden *gg*
mfg saroll
-
Ich würde die Session-Lifetime einfach auf 0 setzen, dann wird beim schliessen des Browserfensters doch die Session geschlossen.
Am sinnvollsten finde ich den User das entscheiden zu lassen. Einfach ne Checkbox mit der Bezeichnung ("Login speichern") Ist diese angeklickt, setzt man den Timeout hoch an, ist dieses nicht angeklickt setzt man ihn auf 0 - beim Browser beenden ausloggen.
Wo ist da das Problem?
-
Das was du da gerade sagst bezieht sich wohl auf Cookies (die evtl. die Session-ID speichern). Auf dem Client wird das Cookie dann zwar gelöscht, aber auf dem Server exisitert sie erstmal noch weiter
-
ja richtig.
aber für den Benutzer ist damit die Session auch "beendet", denn er hat ja keinen Zugriff darauf. Und da es hier um Javascript-Lösungen ging bin ich nur von einem clientseitigen beenden oder besser ausloggen oder sowas in der Art ausgegangen.
Wenn die Daten auf dem Server auch sofort gelöscht werden sollen, bringt das natürlich nix
-
Tow-B.de schrieb:
ja richtig.
aber für den Benutzer ist damit die Session auch "beendet",
Wenn es nur darum geht, dann würde man nie ausloggen - denn das bedeutet ja aufwand beim wiedereinloggen.
Es geht darum die Session zu schützen. Wenn sie nämlich aus ist - dann kann sie auf kein Fremder mehr übernehmen und Blödsinn mit dem Account machen.
Das ist der Grund warum man Sessions gerne schnell beendet (und natürlich aus dem Grund weil man nicht gerne sinnlose Daten speichert die bereits ungültig geworden sind).
-
hmm, okay. stimmt
-
aber man kann die doch so auch irgendwie schützen oder??
sonnst könnte sich nur alle halbe stunde einer einloggen
ooooder??mfg saroll
-
hä?
du hast ne Session-ID die wird im Cookie gespeichert, und dann eine dazugehörige Datei auf dem Server. Wenn nun der Browser angesurft kommt und die Session-ID übermittelt weiss der Server aus welchem Session-File er die Info holen muss. Jeder Benutzer hat natürlich ne andere Session-ID.