Probleme mit Session_ID und Frames

Tundra

Aktives Mitglied
Thread Starter
Dabei seit
20.12.2006
Beiträge
1.064
Reaktionspunkte
48
Hi,

in einem Frameset muss ich mit Session_IDs arbeiten, aber es klappt einfach nicht.

index.php
session_name("test");
session_start();

frame name=kopf src="seite1.php?PHPSESSIONID=<?php echo session_id();?>"
frame name=content src="seite2.php?PHPSESSIONID=<?php echo session_id();?>"

Beide Dateien (seite1 und seite2) fangen mit
session_start();
an, trotzdem kann ich in der erzeugten Session nichts herein schreiben bzw. auslesen in den einzelnen Frames.

Grüße und Danke
Guido
 
In der index.php hast du der Session den Namen "test" gegeben, nicht, wie du den frames mitteilst, "PHPSESSIONID". Zwei verschiedene Sessions mit der gleichen ID kann nicht funktionieren. Die einfachste Konstruktion wäre, Name weglassen und nur der Befehl session_start() zu Beginn der Scripts, dann wird der in der php.ini voreingestellte Name "PHPSESSID" verwendet.

Solange der Browser das Session-Cookie aus index.php akzeptiert, ist die Übergabe mittels QUERY_STRING unnötig, andernfalls gibt es verschiedene Möglichkeiten eines Fallbacks. Mehr dazu in: http://www.php-faq.de/q/q-sessions-methode.html

Wenn du die PHP-Konfiguration über phpinfo() checkst, und session.use_trans_sid ist aktiviert, wird automatisch bei fehlendem Cookie ein Fallback im Frame-Attribut "src" erzeugt. Wenn du aus vielerlei Gründen über ini_set ('session.use_trans_sid', 1) den automatischen Fallback vor dem Befehl session_start() nicht aktivieren kannst, gibt es auch noch die PHP-eigene Konstante SID, die deine Session ID enthält (und zwar komplett "PHPSESSID=...") - sofern nicht das Cookie gesetzt ist, dann ist SID leer.

Eine Möglichkeit wäre dann, z.B. über eine bedingte Zuweisung, frame name="kopf" src="seite1.php<?=(SID) ? '?'.SID : ''?>" zu schreiben.
 
:clap:
Super, so hat es nun geklappt.
Ich hatte sehr viel ausprobiert gehabt, mit und ohne session_name, mit und ohne Übergabe, mit und ohne trans_id, etc.
Wenn man es richtig macht, dann ist es keep it smal and simple. :)

PHP:
In der index.php habe ich folgendes eingetragen:
init_set("session.use_cookies","1");
init_set("session.use_trans_sid";"1");
session start();

Im frame erfolgt der Dateiaufruf ganz normal, also ohne irgendwelche Parameter.
Durch trans_sid ist das nicht nötig.

Es ist nun problemlos möglich in einem Fenster z. B.
einen Wert zu setzen $_SESSION['vorname'] = Guido

und im anderen Frame anzeigen zu lassen.

Und ich tüftle da zwei lange Abende mit verschiedenen Einstellungen, Parametern usw. herum und dann ist das nacher so einfach. :(
Gegenüber einer "normalen" Seite wo ich mit Session arbeite und je nach Auswahl die entsprechende Datei include, hätte ich nur trans_sid aktivieren brauchen.
 
Zurück
Oben Unten