| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
M
Anmeldedatum: 05.11.2007 Beiträge: 107 Wohnort: Aachen
|
Verfasst am: Mo 17 März, 2008 21:33 Titel: Sessions und IFrames |
|
|
Ich habe eine Seite, die ein IFrame einbindet. In dieser Seite starte ich über meine Session-Klasse eine Session und weise einer Testvariablen einen Wert zu.
Wenn ich jetzt versuche im IFrame auf diese Testvariable zuzugreifen sagt er mir immer die Variable sei undefiniert - unabhänig davon, ob ich hier nocheinmal die Session starte oder nicht.
Die Session ID wird als Cookie übertragen.
Welche Schritte sind nötig, um auf eine Session, die im Hauptfenster gestartet wurde auch in dem IFrame zugreifen zu können?
|
|
| Nach oben |
|
 |
Slava Administrator
Anmeldedatum: 16.01.2007 Beiträge: 285 Wohnort: Köln
|
Verfasst am: Mo 17 März, 2008 22:14 Titel: |
|
|
es ist zu empfehlen session in deinem hauptfenster zu starten und an frame src die sessionid als parameter übergeben
src="url?<?php echo session_name().'='.session_id() ;?>"
in dem frame muss session natürlich auch gestartet werden
|
|
| Nach oben |
|
 |
M
Anmeldedatum: 05.11.2007 Beiträge: 107 Wohnort: Aachen
|
Verfasst am: Di 18 März, 2008 02:32 Titel: |
|
|
Habe ich gemacht, er meldet immernoch 'Undefined index'
|
|
| Nach oben |
|
 |
Simon W. Anti-verdenglischungs-Abgeordneter
Anmeldedatum: 05.11.2007 Beiträge: 285 Wohnort: Aachen
|
Verfasst am: Di 18 März, 2008 02:41 Titel: |
|
|
zeig doch bitte mal die scripts.
|
|
| Nach oben |
|
 |
M
Anmeldedatum: 05.11.2007 Beiträge: 107 Wohnort: Aachen
|
Verfasst am: Di 18 März, 2008 11:40 Titel: |
|
|
Hauptseite
| Php: |
<?PHP
require_once("session.php");
$session = new session;
if(!$session->create_session())
{
echo $session-> get_error();
}
$SID = $session->get_sid();
$_SESSION['test'] = "LALA";
?>
[...]
<iframe src="index.php?<?php echo session_name().'='.session_id() ;?>" width="312" height="585" name="content" scrolling="auto" frameborder="0"></iframe>
|
IFrame
| Php: |
<?PHP
require_once("session.php");
$session = new session;
if(!$session->create_session())
{
echo $session-> get_error();
}
$SID = $session->get_sid();
[...]
?>
|
Session.php
| Php: |
<?PHP
class session
{
var $sid;
var $error;
function create_session ()
{
ini_set('session.use_trans_sid', 1);
{
$this->error = "Konnte Sessionnamen nicht setzen.<br>";
return FALSE;
}
{
$this->error = "Konnte Session nicht starten.<br>";
return FALSE;
}
return TRUE;
}
function get_sid ()
{
return $this->sid;
else
{
return FALSE;
}
}
function set_session_var ($var, $value)
{
if(!$_SESSION[$var] = $value)
return FALSE;
else
return TRUE;
}
function del_session_var ($var)
{
{
{
$this->error = "Konnte Session-Variable '$var' nicht löschen.<br>";
return FALSE;
}
return TRUE;
}
else
{
$this->error = "Session-Variable '$var' existiert nicht.<br>";
return FALSE;
}
}
function end_session ()
{
}
function get_error ()
{
return ("<h2>Fehler</h2>$this->error");
}
}
?>
|
|
|
| Nach oben |
|
 |
Simon W. Anti-verdenglischungs-Abgeordneter
Anmeldedatum: 05.11.2007 Beiträge: 285 Wohnort: Aachen
|
Verfasst am: Di 18 März, 2008 15:16 Titel: |
|
|
Da behaupte ich mal, dass du das Problem an der falschen Stelle suchst. Abgesehen davon, dass du die Session in eine Klasse kapselst und dann aber trotzdem _SESSION verwendest (anstelle von $session->get('variable')), die Struktur also etwas inkonsistent ist, funktioniert die Session.
Was ich außerdem etwas komisch finde, ist, dass eine "Hauptseite" wiederum eine "index.php" einbindet...
|
|
| Nach oben |
|
 |
M
Anmeldedatum: 05.11.2007 Beiträge: 107 Wohnort: Aachen
|
Verfasst am: Di 18 März, 2008 17:17 Titel: |
|
|
Das liegt daran, dass das System im Hintergrund schon recht alt ist und nicht für großartige Anpassungen gedacht, das neue aber noch nicht fertig ist. Jetzt muss die IFrame Geschichte halt noch mit dem alten geregelt werden und um hier Arbeit einzusparen ist die Namensgebung der Dateien etwas konfus ^^
Wo könnte das Problem denn angesiedelt sein? Ich habe leider gar keine Vorstellung, wonach ich jetzt noch suchen muss.
|
|
| Nach oben |
|
 |
Simon W. Anti-verdenglischungs-Abgeordneter
Anmeldedatum: 05.11.2007 Beiträge: 285 Wohnort: Aachen
|
Verfasst am: Di 18 März, 2008 18:41 Titel: |
|
|
füg einfach mal den code, so wie du ihn hier gepostet hast, in drei einzelne dateien ein. dann testest du mal, ob das funktioniert. wenn ja, dann kannst du ja stück für stück probieren, was passiert, wenn du einzelne code-abschnitte aus den richtigen dateien hinzunimmst. so kannst du ja die quelle eingrenzen.
|
|
| Nach oben |
|
 |
M
Anmeldedatum: 05.11.2007 Beiträge: 107 Wohnort: Aachen
|
Verfasst am: Di 18 März, 2008 19:23 Titel: |
|
|
Die Schnipsel wie sie hier stehen zeigen das gleiche Verhalten.
In den Dateien ist auch jeweils nicht viel übriger Code drin...
|
|
| Nach oben |
|
 |
Simon W. Anti-verdenglischungs-Abgeordneter
Anmeldedatum: 05.11.2007 Beiträge: 285 Wohnort: Aachen
|
Verfasst am: Mi 19 März, 2008 00:01 Titel: |
|
|
Und ohne Iframe funktioniert das ganze? Dann bin ich leider mit meinen schnellen Ratschlägen am Ende...
|
|
| Nach oben |
|
 |
|