PHP / JS Fenster schließen erkennen
Patrick Schröder
- php
0 Cheatah0 Patrick Schröder0 FICHTL0 wahsaga
Hallo ihr!
Ich habe folgendes Problem:
Ich möchte gern erkennen, dass ein Fenster geschlossen wird. Nun gibt es die Möglichkeit dies per JS zu erkennen, indem man im body-Tag onUnLoad="" verwendet. Darüber kann man eine entsprechende Funktion aufrufen.
Nun würde ich dabei gern auf JS verzichten und wissen, ob PHP eine ähnliche Funktion bietet. Leider habe ich bis jetzt hierzu keine Informationen gefunden.
Es geht darum, dass jemand in einem internen Bereich normalerweise den Logout-Button benutzen sollte. Wie User aber nunmal sind, einige beachten diesen Button nicht und schließen stattdessen einfach das Fenster.
Zusätzlich hatte ich vor die Logout-Daten per Location (php) zu übergeben, damit jemand auch dann tatsächlich "sauber ausgeloggt" wird.
Da ich wie gesagt in php keine Funktion in dieser Hinsicht gefunden habe, habe ich vorerst JS verwendet. Aber auch die Funktion funktioniert nicht so, wie ich gedacht hatte. Nun bin ich bei JS auch kein Experte.
Hier die Funktion, die ich geschrieben hatte (teils aus nem bhv-Buch):
function closelogout() {
window.history.go('<? echo baseurl ?>logout.php?userdaten=<? echo $userdaten ?>');
}
<body onUnLoad="closelogout()">
Was kann ich tun? Am besten fände ich natürlich, wenn ich auf JS verzichten könnte!
Gruß Patrick
Hi,
Nun würde ich dabei gern auf JS verzichten und wissen, ob PHP eine ähnliche Funktion bietet.
es existiert kein Weg, mit einer serverseitigen Technik auf clientseitige Ereignisse zu reagieren. Die JavaScript-Variante ist zudem als äußerst unsicher zu klassifizieren.
Es geht darum, dass jemand in einem internen Bereich normalerweise den Logout-Button benutzen sollte.
Du bist nicht der erste mit diesem Problem, es wurde hier mehrfach behandelt und ist im Archiv recherchierbar. Du solltest eine der genannten Varianten bevorzugen, wie z.B. nach dem (hoffentlich ohnehin vorhandenen) Logout durch Timeout beim nächsten Login auf den Sinn eines Logouts hinzuweisen.
function closelogout() {
window.history.go('<? echo baseurl ?>logout.php?userdaten=<? echo $userdaten ?>');
}
history.go() erwartet einen Wert, um wieviele Seiten in der History des Browsers nach vorne bzw. zurück gegangen werden soll. Um auf eine _URL_ zu verweisen, verwende das location-Objekt - was Dich in Deinem speziellen Fall jedoch auch nicht weiterbringt, da das Problem unlösbar ist. Und tu Dir und Deinen potentiellen Helfern bitte einen Gefallen: Eliminiere bei clientseitigen Dingen jede Spur serverseitigen Codes. Er ist nicht relevant, sondern stört und verwirrt nur.
Cheatah
Hallo Cheatah!
Danke für die Auskunft. Ich habe mir teilweise schon sowas gedacht... aber nunja. Kann man wohl nichts dran machen...
Gruß Patrick
Hallo,
Und tu Dir und Deinen potentiellen Helfern bitte einen Gefallen: Eliminiere bei clientseitigen Dingen jede Spur serverseitigen Codes. Er ist nicht relevant, sondern stört und verwirrt nur.
Ich hab irgendwo vor kurzem einen Beitrag gelesen in dem der Author
darauf hingewiesen hat das PHP genau zu diesem Zwecke entstanden ist
und deshalb das benützen von Template-Engines sowieso überflüssig
ist. Ich bin nicht dieser Meinung da ich mit diversen Template
Engines eigentlich nur gute Erfahrungen gemacht habe.
Allerdings wie willst du den ein Javascript sonst generieren
(ohne TplEngine) wenn nicht entweder so oder umgekehrt du fügst den
HTML-Code in eine PHP Variable ein.
Beides ist nicht vorteilhaft läßt sich jedoch nicht vermeiden.
Oder hab ich da was falsch verstanden?
Schöne Grüße
FICHTL
hi,
Allerdings wie willst du den ein Javascript sonst generieren
(ohne TplEngine) wenn nicht entweder so oder umgekehrt du fügst den
HTML-Code in eine PHP Variable ein.Beides ist nicht vorteilhaft läßt sich jedoch nicht vermeiden.
Oder hab ich da was falsch verstanden?
ja, hast du.
cheatahs hinweis bezog sich darauf, dass man hier bitte schön den html- und javascript-code posten soll, wie er im browser ankommt, wenn man hilfe bei einem html/JS-problem sucht.
_wie_ dieser code serverseitig erzeugt wurde, interessiert an dieser stelle nämlich nicht, und <?php>-bereiche o.ä. machen den html/JS-code schwerer durchschaubar, und sind somit für die lösung so eines problems alles ander als förderlich.
gruss,
wahsaga