Hallo!
Verstehe immer noch nicht ganz wie ich eine vollkommen neue nur für ein Projektbezogene session erstellen kann:
dass z.b. für das Programm adr.php eine session xxx besteht;für ein Programm info.php eine session yyy besteht.
Das "Problem" sind die Cookies, oder wie die verschiedenen Browser damit umgehen. Wie schon gesagt wurde, verwendet PHP standardmäßig Cookies zur Übergabe der Session-ID, und dieser Session-Cookie existiert solange, wie die Browser-Instanz auf dem Rechner läuft. Der Session-Cookie ist eigentlich ein ganz normaler Cookie, der sich auf den einen Hostnamen bezieht, der den Cookie gesetzt hat. Gemäß HTTP-Standard schicken die Browser den Cookie nach Erhalt bei jedem Request an eine Resource (Bild, Script, Verzeichnis...) dieses Hosts zurück, sofern der Pfad im Cookie nicht eingeschränkt wurde, dazu später mehr.
Ein Firefox wird - egal wieviele Fenster offen sind, immer nur in einer Instanz ausgeführt. Das heißt jedes Fenster kennt die Cookies der anderen Fenster. Da Session-Cookies sich normalerweise auf den Hostnamen beziehen, schickt Firefox - egal welches Scripte Du unter dem Hostnamen aufrufst, immer den Session-Cookie mit - auch wenn er den aus einem anderen Fenster mit einem anderen Script hat. Für Firefox ist das nur ein Cookie der eben jedesmal mitgesendet werden muss, wenn ein Request an diesen Hostnamen rausgeht - egal aus welchem Fenster. Wenn PHP dann diesen Cookie empfängt, erkennt es die Session und startet diese erneut.
Beim IE ist das anders, der kann mehrere Instanzen parallel geöffnet haben, das heißt wenn Du ein Fenster komplett neu öffnest (also nicht aus einem anderen IE-Fenster heraus), hast Du eine neue IE-Instanz, mit eigenen (Session-)Cookies. Damit kannst Du dann auch parallel mit zwei Sessions unter einem Hostnamen arbeiten.
Du hast aber mehrere Möglichkeiten dieses Problem zu umgehen.
1. verwende unterschiedliche Hostnamen. Dann musst Du nichts verändern, denn der Browser schickt einen Cookie immer nur an den Hostnamen, der den Cookie auch gesetzt hat.
2. verwende unterschiedliche Verzeichnisse, und passe die Einstellungen mit session_set_cookie_params() an, vor allem den Cookie-Pfad (2. Parameter). Hiermit kannst Du beeinflussen, dass der Browser den Cookie immer nur an ein bestimmtes Verzeichnis schicken soll. Und wenn das eben zwei verschiedene Verzeichnisse sind, kommen sich die Sessions nicht mehr ins Gehege, auch nicht mit Firefox.
3. Schalte die Verwendung von Cookies komplett ab. Hierzu muss session.use_cookies abgeschaltet sein und session.use_trans_sid eingeschaltet sein. Verändern kannst Du diese ini-Einstellungen zur Laufzeit mit der Funktion ini_set().
bis ich das ganze begriffen habe, werde ich wie früher die variablen mit hidden feldern übergeben.
Nein, das solltest Du nicht machen: http://www.php-faq.de/q/q-sessions-zweck.html ;-)
Grüße
Andreas
SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/