bituniverse.com Foren-Übersicht bituniverse.com
Entwickler Forum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Sessions und IFrames
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> PHP allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
M



Anmeldedatum: 05.11.2007
Beiträge: 107
Wohnort: Aachen

BeitragVerfasst am: Mo 17 März, 2008 21:33    Titel: Sessions und IFrames Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Slava
Administrator


Anmeldedatum: 16.01.2007
Beiträge: 285
Wohnort: Köln

BeitragVerfasst am: Mo 17 März, 2008 22:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
M



Anmeldedatum: 05.11.2007
Beiträge: 107
Wohnort: Aachen

BeitragVerfasst am: Di 18 März, 2008 02:32    Titel: Antworten mit Zitat

Habe ich gemacht, er meldet immernoch 'Undefined index'

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Simon W.
Anti-verdenglischungs-Abgeordneter


Anmeldedatum: 05.11.2007
Beiträge: 285
Wohnort: Aachen

BeitragVerfasst am: Di 18 März, 2008 02:41    Titel: Antworten mit Zitat

zeig doch bitte mal die scripts.

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
M



Anmeldedatum: 05.11.2007
Beiträge: 107
Wohnort: Aachen

BeitragVerfasst am: Di 18 März, 2008 11:40    Titel: Antworten mit Zitat

Hauptseite
Php:
  1. <?PHP
  2.  
  3. require_once("session.php");
  4.  
  5. $session = new session;
  6.  
  7. if(!$session->create_session())
  8.   {
  9.     echo $session->get_error();
  10.     exit;
  11.   }
  12.  
  13. $SID = $session->get_sid();
  14.  
  15. $_SESSION['test'] = "LALA";
  16. echo $_SESSION['test'];
  17.  
  18. ?>
  19.  
  20. [...]
  21.  
  22. <iframe src="index.php?<?php echo session_name().'='.session_id() ;?>" width="312" height="585" name="content" scrolling="auto" frameborder="0"></iframe>

IFrame
Php:
  1. <?PHP
  2.  
  3. require_once("session.php");
  4.  
  5.   $session = new session;
  6.  
  7.   if(!$session->create_session())
  8.     {
  9.       echo $session->get_error();
  10.       exit;
  11.     }
  12.  
  13.   $SID = $session->get_sid();
  14.  
  15. echo $_SESSION['test'];
  16.  
  17. [...]
  18.  
  19. ?>

Session.php
Php:
  1. <?PHP
  2.  
  3. class session
  4.   {
  5.  
  6.     var $sid;
  7.     var $error;
  8.  
  9.     function create_session ()
  10.       {
  11.  
  12.         ini_set('session.use_trans_sid',1);
  13.         session_set_cookie_params(time()+1800, ini_get('session.cookie_path'), ini_get('session.cookie_domain'));
  14.  
  15.         if(!session_name("PWM".md5($_SERVER['PATH_TRANSLATED'])))
  16.           {
  17.             $this->error = "Konnte Sessionnamen nicht setzen.<br>";
  18.             return FALSE;
  19.           }
  20.  
  21.         if(!session_start())
  22.           {
  23.             $this->error = "Konnte Session nicht starten.<br>";
  24.             return FALSE;
  25.           }
  26.  
  27.         $this->sid = strip_tags(SID);
  28.  
  29.         return TRUE;
  30.       }
  31.  
  32.     function get_sid ()
  33.       {
  34.         if(!empty($this->sid))
  35.             return $this->sid;
  36.         else
  37.           {
  38.             return FALSE;
  39.           }
  40.       }
  41.  
  42.     function set_session_var ($var, $value)
  43.       {
  44.         if(!$_SESSION[$var] =   $value)
  45.           return FALSE;
  46.         else
  47.           return TRUE;
  48.       }
  49.  
  50.     function del_session_var ($var)
  51.       {
  52.         if (session_is_registered($var))
  53.           {
  54.             if(!session_unregister($var))
  55.               {
  56.                 $this->error = "Konnte Session-Variable '$var' nicht löschen.<br>";
  57.                 return FALSE;
  58.               }
  59.  
  60.             return TRUE;
  61.           }
  62.         else
  63.           {
  64.             $this->error = "Session-Variable '$var' existiert nicht.<br>";
  65.             return FALSE;
  66.           }
  67.       }
  68.  
  69.     function end_session ()
  70.       {
  71.         session_destroy();
  72.       }
  73.  
  74.     function get_error ()
  75.       {
  76.         return ("<h2>Fehler</h2>$this->error");
  77.       }
  78.   }
  79. ?>

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Simon W.
Anti-verdenglischungs-Abgeordneter


Anmeldedatum: 05.11.2007
Beiträge: 285
Wohnort: Aachen

BeitragVerfasst am: Di 18 März, 2008 15:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
M



Anmeldedatum: 05.11.2007
Beiträge: 107
Wohnort: Aachen

BeitragVerfasst am: Di 18 März, 2008 17:17    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Simon W.
Anti-verdenglischungs-Abgeordneter


Anmeldedatum: 05.11.2007
Beiträge: 285
Wohnort: Aachen

BeitragVerfasst am: Di 18 März, 2008 18:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
M



Anmeldedatum: 05.11.2007
Beiträge: 107
Wohnort: Aachen

BeitragVerfasst am: Di 18 März, 2008 19:23    Titel: Antworten mit Zitat

Die Schnipsel wie sie hier stehen zeigen das gleiche Verhalten.
In den Dateien ist auch jeweils nicht viel übriger Code drin...

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Simon W.
Anti-verdenglischungs-Abgeordneter


Anmeldedatum: 05.11.2007
Beiträge: 285
Wohnort: Aachen

BeitragVerfasst am: Mi 19 März, 2008 00:01    Titel: Antworten mit Zitat

Und ohne Iframe funktioniert das ganze? Dann bin ich leider mit meinen schnellen Ratschlägen am Ende...

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    bituniverse.com Foren-Übersicht -> PHP allgemein Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB2.de
Powered by WebRing.