Ankündigung

Einklappen
Keine Ankündigung bisher.

Session bei Frame

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session bei Frame

    Hallo,

    ich vergebe beim Start meiner Seite gleich eine Session und hänge diese an jeden Link.
    Hier ist der Code vom Frameset

    Code:
    <?
    session_start();
    session_register("idnr");
    ?>
    <html>
    
    		<frameset rows="91,*" border="0" framespacing="0" frameborder="no">
    		<frame src="pages/oben.php?<? echo "".SID."";?>" name="oben" noresize scrolling="no">
    		<frame src="leasingshop/body.php?<? echo "".SID."";?>" name="body" noresize>
    	</frameset>
    	<noframes>
    
    		<body bgcolor="#ffffff">
    			
    
    </p>
    		</body>
    
    	</noframes>
    
    </html>
    Es funktioniert alles wenn die Seiten über die Domain aufgerufen werden. Wenn aber ein Besucher über eine einzelne Frameseite kommt wird nur diese angezeigt und keine Session vergeben. Die Session wird zwar amLink dann angezeigt aber ich wollte diese auch noch mit PHPSESSID in der Datenbank speichern. Wenn ich mit Java das frameset lade kommt zwar automatisch die Startseite aber die Sessions funktionieren nicht richtig. Auf der 2. Seite sollte dann die Session gespeichert werden.

    Code:
    //Aktualisierung der Besucherdaten
    $zeit=time();
    $titel="Start";
    $browser=$_SERVER['HTTP_USER_AGENT']; 
    
    
    $IP = getenv("REMOTE_ADDR");
    $sql = "SELECT COUNT(id) FROM visitor WHERE sess='$IP'";
    $ergebnis = mysql_query($sql,$verbindung);
    
    if ($ergebnis==0)
        die(mysql_error());
    elseif(mysql_result($ergebnis,0,0)){
        $sqlbefehl = "UPDATE visitor set titel='$titel' Where sess='$IP'";
    } else {
        $sqlbefehl = "insert into visitor (id,sess,zeit,titel,aktiv,session,artnr) Values ('','$IP','$zeit','$titel','','$PHPSESSID','')";
    }
    mysql_query($sqlbefehl,$verbindung);
    Wie kriege ich die Session auch für Seiteneinsteiger?


  • #2
    Hallo R. Hartinger,

    ich habe Dein Posting gesehen und fühle mich sehr stark an mich selbst erinnert. Auch ich arbeite mit Frame-basierten Websites, die unter anderem auch mit Sessions arbeiten. Und auch ich hatte die selben probleme wie Du.

    Dein Problem läßt sich soweit zusammenfassen (korrigiere mich wenn ich Verständnisfehler mache):

    Die einzelnen Frames sollen sich untereinander vom Begin und Ende einer Session unterrichten. Wahrscheinlich auch über Änderungen von Sessionwerten.

    Lösung (soweit ich es herausgefunden habe - mein eigener Lösungsweg):

    Das Beste ist, wenn auch die Frame-Masterpage mit "session_start()" ausgerüstet ist. Nach Beginn einer Session muß sie dann neu geladen werden. Dann aber, da sie die Masterpage ist, wird jede Framepage mit den Sessionwerten versorgt.

    Das Leidige ist, daß dadurch alle Frames neu geladen werden müssen. Aber dies ist Deiner Wunschlösung nicht so unähnlich, denn auch bei Deiner angedachten Lösung muß ja zumindest der gewünschte Frame erstmal neu geladen werden, um die Session zu erkennen.

    Wenn nach dem Neu-Laden der Frame-Masterpage bestimmte Seiten in den Frames dargestellt werden sollen, dann könntest Du die Frame-Masterpage mit mindestens einem Parameter aufrufen, der ihr sagt, welche Seite in welchem Frame geladen werden soll.

    Ich könnte Dir ja auch noch sagen, daß vieleicht das Konzept geändert werden könnte bezüglich welche Frames mit Sessions zu tun haben sollen, aber daß wirst Du wahrscheinlich nicht so gerne hören (wie ich damals auch nicht).

    Wenn Du mir mehr über den Sinn dieser Website erzählst und warum mehrere Frames mit Sessiondaten umgehen müssen, kann ich ja vieleicht - auf mehr Wissen aufbauend - dann doch noch eine für Dich bessere Lösung finden.

    Melde Dich mal.

    Sven
    sigpic
    Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
    Sven

    Kommentar


    • #3
      danke erstmal für die Aufschlußreiche Antwort. Meine Masterseite wird durch die index.html gestartet und hat session_start() am Anfang. An dem liegts nicht. Es wird auch eine Session vergeben. Nur will ich die (für einen Live-Chat) abspeichern mit PHPSESSID und das geht nicht. Was bräuchtest Du um weiterzuhelfen?

      Kommentar


      • #4
        Befindet sich die "session_start()" auch am Anfang jeder Page, die in einem der Frames geladen wird? Dies ist absolut wichtig. Das führt eine bestehende Session fort, oder öffnet eine Session wenn noch keine da ist (z.B. durch Laden von außerhalb).

        Klar: nur wenn die Frame-Pages von der Page aufgerufen werden, die die Daten der Session einstellt, wird die mit den Daten gefütterte Session auch fortgesetzt. Wird eine Frame-Page, die ja auch "session_start()" am Anfang hat, von woanders her geöffnet, wird nichts weiter getan, als eine neue Session zu öffnen - eine Session, die noch keine Daten eingestellt bekommen hat. Könnte es daran liegen?

        Nun könnte man diese leeren Sessions nur dann mit Daten füllen (wie z.B. Username), wenn sich in jeder Frame-Page ein PHP-basierter Check befindet, der prüft, ob die Session bereits Daten besitzt. Wenn nicht, wird mit einem Link auf die Login-Page verwiesen, z.B. mit "die()".

        Was genau passiert, wenn die Session keine Werte besitzt, ist ganz Dir überlassen. Kann ein Link sein, ein "header()"-Befehl, oder ein echo mit "meta http-equiv=refresh". Was auch immer, es verweist auf die LogIn-Page oder auf das Laden der Frame-Masterpage, ganz wie Du willst. Auf jedenfall mußt Du mit einer Sessionprüfung und erwähnten Gegenmaßnahmen arbeiten, um Dein System am Funktionieren zu halten.

        Hilft Dir das bereits? Oder noch mehr Hilfe erwünscht?

        Sven
        sigpic
        Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
        Sven

        Kommentar


        • #5
          Ich habe das selbe Problem mit IFRAMEs:

          Es gibt eine PHP Applikation, die mit einer Session arbeitet.
          Im Rahmen eines Partnerprogrammes soll diese Websit in andere Webseiten per IFRAME eingebunden werden. Dazu ist in der Session eine Variable "style" definiert, welche des Styleset der einzubindenden Applikation festlegt, sodass es so aussieht, als würde die Applikation zu der Partnerseite gehören.

          Im Firefox Browser klappt das auch, aber beim Internet Explorer wird das Styleset immer auf den Dafault Wert zurück gesetzt. Das ist sehr lästig, denn mir gehen langfsam die Ideen aus, wie man das UNABÄNGIG von der einbindenden Partnerseite lösen kann. Ich kann schließlich nicht von jedem Partner verlangen, dass er mehr oder weniger komplexen PHP Code in seine Seite aufnimmt, nur um meine Session zu starten.


          Hat da jemand eine Idee?

          Kommentar

          Lädt...
          X