Mehrere Instanzen einer Anwendung mit Sessions
dr.White
- php
Hallo Leute,
hier mein Problem:
durch Eingaben in ein Formular (nennen wir es F_A_1) können Anfragen an einen Server gestellt werden. Es öffnet sich daraufhin ein neues Fenster (F_B_1) mit der Antwort.
Die Eingaben im Formular F_A_1 können verändert/verfeinert/... werden und eine neue Antwort (F_B_2) wird erstellt.
In diesen Antwortfenstern F_B_* können ins Detail gehende Abfragen gestartet werden deren Antwort in weiteren Fenstern (F_C) kommen.
Die tiefergehenden Abfragen in F_B_* arbeiten mit Eingaben aus dem Formular F_A_* (und weiteren Angaben). Diese wurden in einer Session (ID über Cookies) gespeichert und werden in F_B_* wieder verwendet.
Wenn ich nun eine neues Fenster F_A_2 starte und wieder Anfragen stelle dann sind alle Antworten F_B_1 nutzlos weil alle Session Daten überschrieben wurden... in F_B_1 kann ich also nicht mehr weiterarbeiten.
Ich möchte aber beliebig viele F_A öffnen können und darin Abfragen starten und zwischen den F_A Fenstern wechseln...
hmm war das verständlich ?
Gruß
doc
hi,
Wenn ich nun eine neues Fenster F_A_2 starte und wieder Anfragen stelle dann sind alle Antworten F_B_1 nutzlos weil alle Session Daten überschrieben wurden... in F_B_1 kann ich also nicht mehr weiterarbeiten.
Ich möchte aber beliebig viele F_A öffnen können und darin Abfragen starten und zwischen den F_A Fenstern wechseln...
Dann sorge entweder dafür, dass jedes Mal eine neue Session erstellt wird - oder unterscheide die Daten innerhalb einer Session durch ein weitere, eindeutige ID (die dann natürlich auch irgendwie zwischen den "zusammengehörigen" Fenstern übergeben werden muss).
gruß,
wahsaga
Danke für deine zügige Antwort!
Dann sorge entweder dafür, dass jedes Mal eine neue Session erstellt wird - oder unterscheide die Daten innerhalb einer Session durch ein weitere, eindeutige ID (die dann natürlich auch irgendwie zwischen den "zusammengehörigen" Fenstern übergeben werden muss).
das "irgendwie" würde mich interessieren, über cookies dürfte das ja dann nicht mehr gehen.
Wenn ich dann eine neue Session erstelle, übergebe ich die Id entweder in der URL oder in einem Hidden Field ?
Wenn ich eine weitere ID zur Kennzeichnung in einer Session verwende, dann mach ich am besten ein mehrdimensionales Array oder so dass ich auf meine Werte mit $_SESSION['id']['wert'] zugreife.
Habe ich da Performance Probleme zu befürchten wenn ich viele Daten in pro ID speichern will ?
n'abend,
Dann sorge entweder dafür, dass jedes Mal eine neue Session erstellt wird - [...]
sind denn mehrere parallele Sessions (zufriedenstellend) möglich?
weiterhin schönen abend...
hi,
sind denn mehrere parallele Sessions (zufriedenstellend) möglich?
Das kommt darauf an, _wie_ parallel sie sind.
Innerhalb einer Scriptinstanz wird das frickelig - aber hier geht es ja nur darum, mehrere Sessions mit einem Client laufen zu lassen. Also müsste m.E. nur dafür gesorgt werden, dass der Client jeweils unterschiedliche Session-IDs erhält und zurückliefert.
Wie schon erkannt, geht das über Cookies nicht so direkt, wenn man aber die Übergabe per GET/POST macht, kann man das ja recht einfach selber kontrollieren (wobei man use_trans_sid dann ggf. deaktivieren sollte, damit einem das nicht dazwischenfunkt - obwohl, wenn man einmal eine "neue" Session erzeugt hat, dürfte ja auch das egal sein).
gruß,
wahsaga
n'abend,
Wie schon erkannt, geht das über Cookies nicht so direkt, wenn man aber die Übergabe per GET/POST macht, kann man das ja recht einfach selber kontrollieren (wobei man use_trans_sid dann ggf. deaktivieren sollte, damit einem das nicht dazwischenfunkt - obwohl, wenn man einmal eine "neue" Session erzeugt hat, dürfte ja auch das egal sein).
da hört sich der erste Vorschlag (array mit instanzID) doch wesentlich schmerzfreier an. Session rumgefrickel ist irgendwie nicht so toll *find*
weiterhin schönen abend...
hi,
da hört sich der erste Vorschlag (array mit instanzID) doch wesentlich schmerzfreier an.
Ist doch kein großer Unterschied - da muss dann halt die Instanz-ID zwischen den beiden Seiten A und B immer konsistent gehalten und ggf. übergeben werden, im anderen Falle die Session-ID.
Wenn alles in einer Session steht, lädt aber auch jede Scriptinstanz am Anfang erst mal alle Daten - werden gleich unterschiedliche Sessions benutzt, muss jedes Script nur seine eigenen Daten rumschleppen.
Session rumgefrickel ist irgendwie nicht so toll *find*
So frickelig finde ich das nicht.
Lediglich in den Automatismus der SID-Übergabe wird ein kleines bisschen eingegriffen, und um alles andere kümmert sich PHP selber, wie bei Sessions sonst allgemein auch.
gruß,
wahsaga
So frickelig finde ich das nicht.
Lediglich in den Automatismus der SID-Übergabe wird ein kleines bisschen eingegriffen, und um alles andere kümmert sich PHP selber, wie bei Sessions sonst allgemein auch.
Ich werde jedem neuen Fenster A eine eigene Session zuordnen, da ich im anderen Falle jede Sessionvariable mit der ich im Script arbeite nochmal in die Hand nehmen muss.
Danke für eure Ratschläge
n'abend,
Ich möchte aber beliebig viele F_A öffnen können und darin Abfragen starten und zwischen den F_A Fenstern wechseln...
wenn du mehrere Instanzen haben willst, musst du dir einen Weg einfallen lassen, wie du die Daten deiner Instanz identifizieren kannst. Jede Instanz braucht ihren eigenen Speicherort, da sie - wie du schon bemerkt hast - sonst die Daten der anderen Instanzen überschreibt.
Möglich wäre bspw. deinen Session-Daten ein Array hinzuzufügen. Der Schlüssel wäre hier grundsätzlich die InstanzID. Du müsstest in deinem Popup-Wald-Und-Wiesen-InternetExplorer-User-Nerver natürlich darauf achten, dass jedes abhängige Fenster die InstanzID seines übergeordneten erbt.
beim starten einer Suchinstanz muss natürlich eine InstanzID generiert, ausgegeben und gespeichert werden.
in etwa verstanden was ich meine?
(waah! scheiss wlan hier</kotz>)
weiterhin schönen abend...
Möglich wäre bspw. deinen Session-Daten ein Array hinzuzufügen. Der Schlüssel wäre hier grundsätzlich die InstanzID. Du müsstest in deinem Popup-Wald-Und-Wiesen-InternetExplorer-User-Nerver natürlich darauf achten, dass jedes abhängige Fenster die InstanzID seines übergeordneten erbt.
beim starten einer Suchinstanz muss natürlich eine InstanzID generiert, ausgegeben und gespeichert werden.in etwa verstanden was ich meine?
Ja habs verstanden :). Hab mir sowas schon gedacht, nur die Übergabe zwischen zusammengehörenden Fenstern sollte dann möglichst elegant sein, da ich hidden fields usw vermeiden wollte dachte ich nur ich frag mal hier, da hier doch einiges an Kompetenz und vor allem Erfahrung liegt
Zu deiner Beruhigung:
Das jedesmal ein neues Fenster aufgeht ist ausdrücklich gewünscht da man das "alte" Formular und die Antwort eventuell gleichzeitig braucht, ein alternativer Button öffnet die Antwort aber auch im selben Fenster...
gruß doc
n'abend,
Ja habs verstanden :). Hab mir sowas schon gedacht, nur die Übergabe zwischen zusammengehörenden Fenstern sollte dann möglichst elegant sein, da ich hidden fields usw vermeiden wollte dachte ich nur ich frag mal hier, da hier doch einiges an Kompetenz und vor allem Erfahrung liegt
wozu will man versteckte Formularfelder vermeiden? Diese haben einzig und allein den Zweck Information für das verarbeitende Script zu halten, die der Benutzer nicht sehen soll/muss.
weiterhin schönen abend...
echo $begrüßung;
[Fensterchaos]
Das ist das Wort, das mir anhand deiner Beschreibung einfällt. Soll solch ein Durcheinander wirklich dem User zugemutet werden? Wäre es da nicht besser, mit einem Fenster, AJAX und sich verändernden/aktualisierenden Bereichen zu arbeiten? Ohne AJAX ließe sich das auch noch mit der Affenformulartechnik hinbekommen. A wird ausgefüllt und abgesendet. Daraufhin wird ein Dokument generiert mit ausgefülltem A und darunter B, usw. usf.
echo "$verabschiedung $name";
[Fensterchaos]
Soll solch ein Durcheinander wirklich dem User zugemutet werden? Wäre es da nicht besser, mit einem Fenster, AJAX und sich verändernden/aktualisierenden Bereichen zu arbeiten? Ohne AJAX ließe sich das auch noch mit der Affenformulartechnik hinbekommen. A wird ausgefüllt und abgesendet. Daraufhin wird ein Dokument generiert mit ausgefülltem A und darunter B, usw. usf.
Nunja der user ist es, der es sich genau so wünscht :)
(wobei man nie sicher sein kann dass der user wirklich weiss was er will)
Das mit Ajax hört sich vernünftig an, hab jedoch keine Ahnung davon und für diese Aufgabe sollen explizit neue Fenster möglich sein um die Ausgaben darzustellen.
Der User kann auch alles in einem Fenster "hintereinander" bekommen.
Mein Problem besteht/bestand ja eher darin, dass wenn mehrere Instanzen der Anwendung geöffnet sind, die Session nur die Daten der jüngsten Anwendung enthält.
schönen Tag noch
n'abend,
Mein Problem besteht/bestand ja eher darin, dass wenn mehrere Instanzen der Anwendung geöffnet sind, die Session nur die Daten der jüngsten Anwendung enthält.
es ist in diesem Forum Gang und Gäbe Fragende auf Ungereimtheiten/Probleme/Unschönes hinzuweisen, nach denen sie gar nicht gefragt haben. Manch einer spielt dann die beleidigte Leberwurst, manch anderer nimmt sich die Tipps zu Herzen.
1235123 Popups haben einfach gravierende Nachteile - keine Möglichkeit der Gruppierung, um nur eines davon zu nennen.
Statt Die 5 verschiedenen Suchtiefen untereinander zu klatschen, kannst du das auch ein wenig eleganter machen, bspw mit Tabs (Registern). Da brauchst du das Rad auch nicht neu erfinden, fertige Bibliotheken hierfür gibt's wie Sand am Meer.
* DomTab, Modul zum Erstellen/Verwalten von Tabs
* tabManager, wie DomTab, allerdings mit ein wenig mehr Funktionalität (*werbungmach*)
* google kenn noch einige weitere ähnliche Dinger...
weiterhin schönen abend...
Statt Die 5 verschiedenen Suchtiefen untereinander zu klatschen, kannst du das auch ein wenig eleganter machen, bspw mit Tabs (Registern). Da brauchst du das Rad auch nicht neu erfinden, fertige Bibliotheken hierfür gibt's wie Sand am Meer.
Danke für die links, habs mir gleich mal angesehen und weiss nun zumindest mal für was AJAX steht.
Da mit den Registern wäre in der Tat elegant, habe schon mit divs und buttons mit display:none und inline gearbeitet um einen ähnlichen Effekt zu erzielen. Das Problem ist nur, dass ich große Datenmengen habe und wenn ich beispielsweise eine Tabelle mit 2000 Spalten "einblende" dann wird die Darstellung echt langsam...
es ist in diesem Forum Gang und Gäbe Fragende auf Ungereimtheiten/Probleme/Unschönes hinzuweisen, nach denen sie gar nicht gefragt haben. Manch einer spielt dann die beleidigte Leberwurst, manch anderer nimmt sich die Tipps zu Herzen.
Bin als newb ja auch für jeden Tipp dankbar, auch wenn ich ihn nicht sofort verstehe :)
1235123 Popups haben einfach gravierende Nachteile - keine Möglichkeit der Gruppierung, um nur eines davon zu nennen.
Da stimme ich dir zu, aber es ist der Wunsch, dass in diesem Falle ein neues Fenster auf geht