Moin!
auch das ist Teil des Problems: Öffne ich über STRG-N ein Fenster B aus dem aktiven Fenster A (in dem ich bereits eingeloggt bin) heraus, so nehme ich das Session-Cookie und somit die Session mit. [...] Hm, habe ich mich verständlich ausgedrückt?
Absolut.
Es ist das Risiko des Benutzers, dass er widersprüchliche und sich gegenseitig nicht aktualisierende Anzeigen und Stände sieht, wenn er mehrere Fenster benutzt. Ein informierter User (einer, der weiß, was er tut) wird deshalb beispielsweise das Hauptmenü mit mehreren Fenstern verlassen, nicht aber aus einem Datensatzbearbeitungslink heraus zwei Fenster öffnen, zuerst in dem einen, dann in dem anderen Den Datensatz bearbeiten und diesen speichern, und sich hinterher wundern, dass nur die Hälfte der Daten (nämlich die letzten gesendeten) in der Datenbank stehen.
Aber selbst dagegen kann man etwas tun. Da ja nicht auszuschließen ist, dass nicht nur ein Nutzer zwei Fenster desselben Datensatzes offen hat, sondern prinzipiell mehrere Nutzer parallel denselben Datensatz bearbeiten, hast du grundsätzlich das Problem, dass du parallele Datensatzänderungen irgendwie zusammenführen mußt.
Entweder sperrst du den Datensatz bei Öffnung in einem Benutzerfenster - dann kriegt sowohl der gleiche Benutzer als auch jeder andere Benutzer bei erneutem Bearbeitungsversuch eine Fehlermeldung.
Oder du speicherst nur die Änderungen, die am Datensatz erfolgt sind, und nicht grundsätzlich das gesamte Formular. Wenn also ein Fenster die Straße und ein anderes den Namen ändert, dann beeinflussen sich diese Änderungen nicht gegenseitig. Das ist natürlich aufwendig, ließe sich aber grundsätzlich durch eine Dopplung der Formularfelder (jedes Datum ist einmal als bearbeitbares Feld und einmal als festes hidden-Feld vorhanden, um Änderungen im Formular festzustellen) realisieren.
Du siehst: Allein deshalb, weil ein Webserver kein Einzelbenutzersystem ist, sondern immer parallel mehrere Benutzer bedienen kann und muß, ist die Forderung, je Benutzer nur ein einziges Fenster zuzulassen, sehr unsinnig. Man muß mehrere Benutzer unter einen Hut bekommen. Dass zwei Fenster unter Umständen auch nur einem einzigen Benutzer gehören können, ist ein irrelevanter Sonderfall.
Und genau deshalb macht es keinen Sinn, irgendwie das Erstellen neuer Fenster zu verhindern.
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)