Browserfunktionen deaktivieren
sandra
- javascript
0 Christian Seiler0 sandra0 Frank (no reg)0 Hans0 Sven Rautenberg0 dedlfix
Hallo,
ist es möglich mit JS dem Benutzer einer WebSite daran zu hindern einen neuen Tab oder ein neues Fenster z.B. Strg + T zu öffnen?
Vielen Dank
Hallo,
ist es möglich mit JS dem Benutzer einer WebSite daran zu hindern einen neuen Tab oder ein neues Fenster z.B. Strg + T zu öffnen?
Nein. Unter einigen Browsern könntest Du eventuell (ich hab's nicht probiert) Strg + T etc. abfangen (guck Dir dazu halt mal die JavaScript-Events zu Tastendrücken an), aber es gibt noch tausend andere Wege, ein neues Tab / neues Fenster zu öffnen, auf die Du keinerlei Einfluss hast - und ferner muss Ctrl+T ja nicht die eingestellte Tastenkombination sein, um ein Tab zu öffnen - im Konqueror z.B. kannst Du als Benutzer alle Tastenkombinationen selbst frei wählen.
Warum willst Du das denn tun?
Viele Grüße,
Christian
Warum willst Du das denn tun?
es geht um die Session ID. Der Benutzer darf nicht mit zwei Fenstern und der gleichen SID die Application offen haben, da sonst die Daten inkonsistent werden..
Gruss
Hi,
sorry, aber dann würde ich dir dringend empfehlen, dieses Problem "doppelt eingeloggt zu sein" (oder ähnliches) an der richtigen Stelle zu lösen anstatt mit halbgaren Javascript Methoden irgendein nicht standardkonformes Verhalten zu erzeugen.
Wenn eine Session angefangen wird (dafür wird es sicher ein Indiz geben), legt eine Information über den Benutzer auf dem Server ab, wenn die Session ausläuft, löscht diese Information wieder. Und zwischenzeitlich überprüft ihr für neue Sessions ob nicht bereits Daten davon temporär abgelegt sind.
Es gibt sicher auch noch zig andere Möglichkeiten, bessere und schlechtere als meine. Aber die Javascript Aktion ist definitiv der Holzweg.
Cheers,
Frank
Hi sexy sandra ;-)
Wie verhinderst Du denn bisher, dass der User sich nicht von einem anderen PC aus einloggt und dann auch gewissermaßen zweimal die gleiche View hat?
Gruß
Hans
Moin!
es geht um die Session ID. Der Benutzer darf nicht mit zwei Fenstern und der gleichen SID die Application offen haben, da sonst die Daten inkonsistent werden..
Eine Webapplikation muß immer damit rechnen, dass Requests vom User in unorthodoxer Reihenfolge kommen.
Es gibt zwei Möglichkeiten, damit umzugehen: Entweder ist das egal, oder es wird programmtechnisch abgefangen.
Hier im Forum beispielsweise ist es vollkommen egal, ob jemand vorher einen Thread gelesen hat - wenn er das Skript zum Posten einer Antwort aufruft, wird halt seine Antwort dem Thread hinzugefügt. Der Vorgang ist für sich genommen atomar und stört nichts Paralleles.
Real-World-Vorgänge wie "Ein Glas Wasser trinken", die in mehreren Schritten im Browser nachgebildet werden sollen, muß man hingegen entsprechend programmieren. Sonst kann es sein, dass zuerst der Wasserhahn aufgedreht wird, dann das Glas leergetrunken, und dann erst ein leeres Glas genommen und unter den Hahn gehalten wird. Ohne Glas soll man den Hahn nicht öffnen, und ohne gefülltes Glas kann man es nicht leertrinken. Das sind alles Dinge, die der Server prüfen muß - und prüfen kann. Da muß man dem Benutzer nicht verbieten, neue Browserfenster zu öffnen, das führt meist zu ekliger Benutzerführung.
- Sven Rautenberg
echo $begrüßung;
es geht um die Session ID. Der Benutzer darf nicht mit zwei Fenstern und der gleichen SID die Application offen haben, da sonst die Daten inkonsistent werden..
Die bessere Lösung wäre, die Session-ID nur für jeweils einen einzigen Vorgang zu verwenden. Nachdem du anhand der übergebenen Session-ID den Client wiedererkannt hast, generierst du eine neue ID für den nächsten Request des Clients und teilst ihm diese in der Response auf den aktuellen Request geeignet mit (neuen Cookie senden, Links mit der neuen ID versehen, ...). Die Daten müssen dann der neuen ID zugewiesen werden oder auch die neue ID den alten Daten. Für PHP gibt es beispielsweise die Funktion session_regenerate_id(), die das alles erledigt.
echo "$verabschiedung $name";