phpskript mit Javascript aufrufen
Andreas
- javascript
Hallo Leute,
wie kann ich es machen, das beim verlassen einer Webseite noch ein PHP-Skript auf dem Server aufgerufen wird? Der Hintergrund ist folgender. Ich habe eine PHP-Anwendung an der sich die Benutzer anmelden müssen. Nun soll der Benutzer automatisch abgemeldet werden, wenn er das Browserfenster schliesst oder eine andere URL eintippt. Diese Abmeldung erfolt über die Datei logout.php.
Meine aktuelle Lösung sieht etwa so aus:
script type="text/javascript">
function logout() {
// Hier muss nun ein Aufruf stehen, welcher ein PHP-Skript
(logout.php) auf dem Server ausführt um den Benutzer von
der Anwendung abzumelden.
}
</script>
<body onunload="logout()">
</body>
Für jede Hilfe wäre ich dankbar.
gruss Andreas
Hallo Andreas,
wie kann ich es machen, das beim verlassen einer Webseite noch ein PHP-Skript auf dem Server aufgerufen wird?
Gar nicht.
Nun soll der Benutzer automatisch abgemeldet werden, wenn er das Browserfenster schliesst oder eine andere URL eintippt.
Und was ist, wenn er die Verbindung kappt, JavaScript deaktiviert oder ähnliches?
Wenn du aber beim Verlassen eine andere Seite ansteuern willst (das location-Objekt hilft), dann ärgerst du den Besucher (er will schließlich zu Seite www.example.org und nicht zu deiner Logout-Seite).
Alternativ könntest du auch ein Popup öffnen lassen mit deinem Logout-Script. Der Popupblocker macht aber auch das zunichte. Und selbst wenn ich gerade meinen Browser schließe, dann fände ich es reichlich gemein wenn wieder ein Fenster aufginge.
Was spricht denn gegen einen Zugrifsschutz über .htaccess?
Grüße
David
Hi,
Wenn du aber beim Verlassen eine andere Seite ansteuern willst (das location-Objekt hilft),
Wenn *das* gehen würde ...
dann ärgerst du den Besucher (er will schließlich zu Seite www.example.org und nicht zu deiner Logout-Seite).
... dann könnte man auf eine Logout-Seite weiterlenken, die ausloggt und dann zur gewünschten Seite weiterleitet - ohne, daß der Surfer davon viel mitbekommt.
Geht aber nicht. ;-)
Gruß, Cybaer
Hi,
mit allen bekannten Einschränkungen:
script type="text/javascript">
function logout() {
logout=window.open("logout.php","logoutWindow");
}
</script><body onunload="logout()">
</body>
Und im logout.php dann ein self.close() im onLoad.
Gruß, Cybaer
Huhu Andreas
vielleicht funktioniert es wenn Du dynamisch eine Grafikresource nachlädst.
Also ungefähr so
function logout()
{
dummy = new Image();
dummy.src = theURL;
}
Wobei theURL auf Dein Skript verweist.
Das sollte dann auch eine Grafik oder ggf. Status 204 o.ä. zurückgeben.
Das "onunload()" oft nicht funktioniert bzw. mit gutem Grund deaktiviert ist wurde ja schon genannt.
Viele Grüße
lulu
Hallo lulu,
klasse Idee. Funktioniert auch ganz gut. Nur dieses unload tut nicht wie es soll :-( aber das ist eine andere Baustelle.
Vielen Dank nochmal für den Tipp.
gruss Andreas
Huhu Andreas
vielleicht funktioniert es wenn Du dynamisch eine Grafikresource nachlädst.
Also ungefähr so
function logout()
{
dummy = new Image();
dummy.src = theURL;
}Wobei theURL auf Dein Skript verweist.
Das sollte dann auch eine Grafik oder ggf. Status 204 o.ä. zurückgeben.Das "onunload()" oft nicht funktioniert bzw. mit gutem Grund deaktiviert ist wurde ja schon genannt.
Viele Grüße
lulu
Hi,
klasse Idee. Funktioniert auch ganz gut. Nur dieses unload tut nicht wie es soll :-( aber das ist eine andere Baustelle.
Nein. Im onUnload kannst Du, wie geschrieben, ggf. mittels window.open eine neue Seite aufrufen. Du kannst aber *prinzipiell* nicht mehr Inhalte einer ja nicht mehr existenten Seite verändern.
Beides zusammen geht halt nicht. Punkt. 8-)
Gruß, Cybaer
Hallo,
klasse Idee. Funktioniert auch ganz gut. Nur dieses unload tut nicht wie es soll :-( aber das ist eine andere Baustelle.
Nein. Im onUnload kannst Du, wie geschrieben, ggf. mittels window.open eine neue Seite aufrufen. Du kannst aber *prinzipiell* nicht mehr Inhalte einer ja nicht mehr existenten Seite verändern.
Ich will die Inhalte der Seite ja gar nicht mehr verändern. Die Hauptsache ist doch, dass logout.php vom Webserver ausgeführt wird. Das ist der Fall, wenn ich ein image-Objekt erstelle und image.url="logout.php" angebe. Kurz bevor die Seite endgültig geschlossen wird, wird durch diese Anweisung noch der Logoutvorgang gestartet und alle sind happy ;-)
Danke nochmal, an alle die auf mein Posting geantwortet haben.
gruss Andi
PS: Beim schliessen des Fensters hat der Trick nicht funktioniert. Das Fenster wurde geschlossen ohne das logout.php aufgerufen wurde. Die Lösung brachte eine alert('Sie wurden abgemeldet'); Anweisung nach der image.url-Zeile. Danach ging es wunderbar. Ich schätze mal, das liegt an der kurzen Verzögerung, die diese Anweisung mit sich bringt.
Hi,
Ich schätze mal, das liegt an der kurzen Verzögerung, die diese Anweisung mit sich bringt.
Ah, nett. Und ja, das schätze ich auch. ;-)
Gruß, Cybaer