kann SESSION verloren gehn?
jimbob
- php
0 Yeti
hallo,
kann es sein dass wenn ich ein popup einer site öffne die session variablen dieser site für diese neue instanz des fensters verloren gehn?
hab das problem noch nie gehabt, aber manche leute berichten, dass wenn sie ein popup der page öffnen die session daten nicht aufscheinen! woran kann dies liegen?
da die session ja am server abläuft sollte ja egal sein in welchem browser window ich die sessionvariablen abrufe, oder?
kann es an der identifikation des clientrechners liegen?
THX jimbob
Das Problem hatte ich auch und denke, es liegt am Client. Nach dem Schließen des Popups läuft die Sitzung im Hauptfenster nämlich schön weiter.
Mein Workaround: Beim Aufruf des PopUps die PHPSESSID mit übergeben und im PopUp folgenden Code unterbringen:
// Wenn die Session-ID bekannt ist, dann bitte keine neue Session initialisieren
// (ergab Probleme beim Öffnen eines PopUps)
if (isset($_GET["PHPSESSID"]))
session_id($_GET["PHPSESSID"]);
if (isset($_POST["PHPSESSID"]))
session_id($_POST["PHPSESSID"]);
// Session initialisieren (speichert ein Cookie beim Client, damit Benutzername und Passwort
// nicht bei jedem Seitenaufruf erneut eingegeben werden müssen)
session_start();
Der Yeti
Moin!
Das Problem hatte ich auch und denke, es liegt am Client. Nach dem Schließen des Popups läuft die Sitzung im Hauptfenster nämlich schön weiter.
Natürlich liegt es in erster Konseqenz am CLient. Wenn dieser Cookies ablehnt, muß die Session-ID per URL-Parameter oder Extra-Formularfeld übergeben werden.
PHP kann so eingestellt werden, dass es diese IDs automatisch an Links dranhängt. Das funktioniert aber nur bei ganz normalen HTML-Links ohne Javascript, und bei ganz normalen Formularen.
Da ein Popup aber mit Javascript geöffnet werden muß, muß man die Session-ID hier manuell dranhängen.
Das geschieht bei einfachen URLs ganz simpel durch dranhängen der Konstanten SID, welche im Bedarfsfall einen String der Art "PHPSESSID=1567565675" enthält, wenn keine Cookies akzeptiert werden, andernfalls nur "".
Das Hidden-Feld in Formularen muß man manuell mit den Angaben session_name() für das name-Attribut und session_id() für das value-Attribut füllen, wenn PHP versagt.
Mein Workaround: Beim Aufruf des PopUps die PHPSESSID mit übergeben und im PopUp folgenden Code unterbringen:
Dein Code ist vollkommen überflüssig. session_start() erkennt, wenn kein Cookie mit der Session-ID übergeben wurde, und verwendet dann automatisch die Angaben aus $_POST oder $_GET.
- Sven Rautenberg
Dein Code ist vollkommen überflüssig. session_start() erkennt, wenn kein Cookie mit der Session-ID übergeben wurde, und verwendet dann automatisch die Angaben aus $_POST oder $_GET.
Sagst du. Warum funktioniert es bei mir dann nur so?!
Der Yeti
Moin!
Dein Code ist vollkommen überflüssig. session_start() erkennt, wenn kein Cookie mit der Session-ID übergeben wurde, und verwendet dann automatisch die Angaben aus $_POST oder $_GET.
Sagst du. Warum funktioniert es bei mir dann nur so?!
Anderer Session-Name als "PHPSESSID" vielleicht? Der ist schließlich nicht festgelegt, sondern konfigurierbar - auch vom Sysadmin zentral!
- Sven Rautenberg