Achim: Leidige Frage zu Frames und Session-Übergabe?

Hallo,

ich verwende frames (will/muss), und starte meinen login in einer nonframe-seite
Ist der login erfolgreich wird ein frameset aufgerufen indem meine frames geladen werden.

Ich versuche nun schon verzweifelt meine session-variablen an die url's zu hängen in der framsetdatei aber das funzt itgendwie net.

Hier mal meine struktur

login.php (aufruf durch die index.php wenn login erforderlich)
index.php ( abfrage ob login ok und wenn ja aufruf der framesets IN der index.php)
in dieser index.php starte ich for dem frameset meine session

Abschnitt wo die framsets deklariert sind:
aufruf einer
menüseite links menue.php
mit
<frame marginwidth="5" marginheight="5" src="menue.php?<?=session_name()."=".session_id()?>" name="menu" noresize             scrolling="auto" frameborder="yes">

ich habe es auch schon mit dem array ansich probiert $_SESSION aber das funktionierte auch nicht.

Kann mir jemand sagen was ich noch beachten muss?

Gruss und danke

Achim

  1. du kannst dich auf jeder deiner seiten auf die session zugreifen, wieso willst du das denn nochmal in der url übergeben, oder gehen cookies nicht?

    ???

    anarkist

    1. Hello,

      du kannst dich auf jeder deiner seiten auf die session zugreifen, wieso willst du das denn nochmal in der url übergeben, oder gehen cookies nicht?

      Das muss man dediziert testen, ob Cookies funktionieren. Und wenn man dann keine transienten Session IDs haben will, aknn man immer nich auch "Auth401" ausweichen. der User muss sich dann allerdings anmelden, wobei da ja immer noch keiner genau weiß, um wen es sich handelt.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  2. Moin,

    Du denkst aber dran die Session auch in beiden Dateien zu starten?

    1. Hallo,

      Du denkst aber dran die Session auch in beiden Dateien zu starten?

      Ach so, es geht also nicht die session einmal zu starten und dann einfach mit der url and die frames zu übergeben?

      Der andere Kollege meinte was mit cookies, bin eigentlich froh wenn das mit dieser session mal klappt.:-)

      Dsa würde also bedeuten das ich in jeder aufzurufenden frameseite jedesmal die session neu starten muss.

      Stimmt das?

      Problem ist folgendes.
      Ich habe ein fast´fertige seite bzw. programm was nur mit einer page auskam (ohne frames)
      In der  index.php wurde die session gestartet und mit weiteren werten versehen wie userid usw.

      Das würde bedeuten das ich diese Werte (wenn ich sie benötige) auch wieder in jeder neuen frameseite neu setzen muss

      Frage nur so  ddof damit ich es auch richtig verstehe

      Gruss und danke

      Achim

      1. Ach so, es geht also nicht die session einmal zu starten und dann einfach mit der url and die frames zu übergeben?
        Dsa würde also bedeuten das ich in jeder aufzurufenden frameseite jedesmal die session neu starten muss.
        Stimmt das?

        Die Unterstützung von Sessions erlaubt Ihnen, eine beliebige Anzahl von Variablen zu registrieren und diese über Anfragen hinweg zu erhalten. Wenn ein Besucher Ihre Website aufruft, überprüft PHP automatisch (falls session.auto_start  auf 1 gesetzt ist) oder auf Anfrage (explizit durch session_start() oder implizit durch session_register()), ob mit der Anfrage schon eine bestimmte Session-ID gesendet wurde. Wenn dies der Fall ist, wird die zuvor gespeicherte Umgebung wiederhergestellt.

        Das würde bedeuten das ich diese Werte (wenn ich sie benötige) auch wieder in jeder neuen frameseite neu setzen muss

        session_start() erzeugt eine Session oder nimmt die aktuelle wieder auf, die auf der Session-ID basiert, die mit einer Anfrage, z.B. durch GET, POST oder ein Cookie, übermittelt wurde.

        Der andere Kollege meinte was mit cookies, bin eigentlich froh wenn das mit dieser session mal klappt.:-)

        Einem Besucher wird beim Aufruf Ihrer Website eine eindeutige ID, die sogenannte Session-ID, zugeordnet. Diese wird entweder benutzerseitig in einem Cookie abgelegt oder in der URL übermittelt.

        Alle Antworten auf Deine Fragen gibt es hier:

        http://de3.php.net/manual/de/ref.session.php

        gruß

        anarkist

        1. Hello,

          session_start() erzeugt eine Session oder nimmt die aktuelle wieder auf, die auf der Session-ID basiert, die mit einer Anfrage, z.B. durch GET, POST oder ein Cookie, übermittelt wurde.

          Eben das hat mich heute auch nochmal beschäftigt.
          man sollte eine Funktion

          session_continue($else, $type='header')

          einführen, die eben die vorhandene Session, die ja üblicherweise über

          $_COOKIE
          $_POST
          $_GET

          kommt, wieder aufnimmt, oder

          Type       funktion
          ---------- ------------------------------------------------
          include    eine andere Datei included
          readfile   eine Andere Datei direkt an den  Browser ausgibt
          header     eine Umleitung auf eine andere Seite vornimmt
          message    nur eine textmeldung ausgibt
          ignore     einfach weitermacht

          Natürlich kann man diese Funktion auch selber schreiben.

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Moin!

            Eben das hat mich heute auch nochmal beschäftigt.
            man sollte eine Funktion

            session_continue($else, $type='header')

            einführen,

            Diese Funktion existiert. Sie heißt "session_start()".

            Der Session-Mechanismus in PHP ist ja nun wirklich nicht so kompliziert. Es gibt genau ein Array, in das alle persistenten Daten geschrieben werden, und es gibt drei Funktionen: session_start(), session_name() und session_id() zum "Bearbeiten". Der Rest der Funktionen ist für die Alltagsverwendung äußerst ungewöhnlich.

            Type       funktion


            include    eine andere Datei included
            readfile   eine Andere Datei direkt an den  Browser ausgibt
            header     eine Umleitung auf eine andere Seite vornimmt
            message    nur eine textmeldung ausgibt
            ignore     einfach weitermacht

            Welchen Sinn sollte das haben?

            - Sven Rautenberg

            1. Hello,

              Diese Funktion existiert. Sie heißt "session_start()".
              Welchen Sinn sollte das haben?

              Du bist gar nicht der echte Sven Rautenberg.
              DER würde nämlich nie so einen Blödsinn erzählen.
              Und auch nicht so dusselige Fragen nach dem Sinn stellen.

              Und so eine Funktion gibt es noch nicht im PHP-Umfang.
              Denn session_start() übnernimmt eine vorhandene Session _oder_ _startet_ _eine_ _neue_.

              Und eben das war hier nicht gewünscht. Wenn keine Session-ID mitgeteilt wird vom Client, soll keine neue Session gestartet werden, sondern einfach von der "geschützten Seite" weggelenkt werden und hin zu einer freien (als Beispiel).

              Ist ja auch keine großartige Sache, sowas zu coden. Nur eine fertige Funktion wäre eben mal wieder ein Stückchen schneller und es handelt sich um eine Grundfunktion, die man oft benötigt, je nachdem in welcher Reihenfolge man Useridentifikation und Session betreibt.

              Harzliche Grüße aus http://www.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              1. Hallo Tom,

                Du bist gar nicht der echte Sven Rautenberg.
                DER würde nämlich nie so einen Blödsinn erzählen.
                Und auch nicht so dusselige Fragen nach dem Sinn stellen.

                Doch, das ist Sven Rautenberg, sonst würde meine Whitelist nicht anspringen. Und die Frage nach dem Sinn ist gar nicht dusselig und er hat überhaupt keinen Blödsinn erzählt. Du hast Dich nur sehr mißverständlich ausgedrückt, was Du überhaupt mit der Funktion bezwecken wolltest.

                Und eben das war hier nicht gewünscht. Wenn keine Session-ID mitgeteilt wird vom Client, soll keine neue Session gestartet werden, sondern einfach von der "geschützten Seite" weggelenkt werden und hin zu einer freien (als Beispiel).

                if (!isset ($_REQUEST[session_name ()])) {
                  // leite weiter
                  Header ('Location: http://www.selfhtml.org/');
                  exit;
                }
                session_start ();

                Wo bitte ist da der großartige Akt? Und vor allem: man versteht da sofort, was damit gemeint ist, im Gegesnatz zu der Funktion, die Du vorgeschlagen hast. Und außerdem ist man da wesentlich flexibler.

                Viele Grüße,
                Christian

                1. Hello,

                  Hallo Tom,
                  if (!isset ($_REQUEST[session_name ()])) {
                    // leite weiter
                    Header ('Location: http://www.selfhtml.org/');
                    exit;
                  }
                  session_start ();

                  Viele Wege führen nach Rom
                  Ich lese es mal als Idee, nicht als fertige Lösung.

                  Aber trotzdem ist Deine Funktion dann nicht sicher.
                  Allerdings könnte man behaupten, wenn Parameter überschrieben werden, ist das Script sowieso manipuliert worden...

                  Und dann muss auch keine Session gestartet werden.

                  Nichtsdestotrotz ist die Funktion "session_start()" nicht die gesuchte gewesen, und deshalb kann der Poster nicht der echte Sven Rautenberg gewesen sein *ggg*

                  Harzliche Grüße aus http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
                  1. Moin!

                    Hello,

                    Hallo Tom,
                    if (!isset ($_REQUEST[session_name ()])) {
                      // leite weiter
                      Header ('Location: http://www.selfhtml.org/');
                      exit;
                    }
                    session_start ();

                    Viele Wege führen nach Rom

                    TIMTOWTDO

                    Ich lese es mal als Idee, nicht als fertige Lösung.

                    Christians Vorschlag ist eigentlich schon die Lösung. Für das konkrete Problem "Weiterleiten, wenn keine Session besteht". Was sollte da noch ergänzt werden, um eine "fertige" Lösung zu erhalten?

                    Aber trotzdem ist Deine Funktion dann nicht sicher.

                    Inwiefern? Bitte skizziere ein Szenario.

                    Allerdings könnte man behaupten, wenn Parameter überschrieben werden, ist das Script sowieso manipuliert worden...

                    ???

                    Nichtsdestotrotz ist die Funktion "session_start()" nicht die gesuchte gewesen, und deshalb kann der Poster nicht der echte Sven Rautenberg gewesen sein *ggg*

                    Ich glaube auch nicht, dass du der echte Tom bist. Der hätte nämlich bei Sessions sofort "persistente Datenhaltung", "token-authentification", "Locking auf Flatfile-DBs" und anderes, für die gestellte Aufgabe total überflüssig kompliziertes Zeugs ins Spiel gebracht. Das fehlt hier alles, also bist du nicht der echte Tom.

                    - Sven Rautenberg

                    1. Hello,

                      Ich glaube auch nicht, dass du der echte Tom bist. Der hätte nämlich bei Sessions sofort "persistente Datenhaltung", "token-authentification", "Locking auf Flatfile-DBs" und anderes, für die gestellte Aufgabe total überflüssig kompliziertes Zeugs ins Spiel gebracht. Das fehlt hier alles, also bist du nicht der echte Tom.

                      ***grins***

                      Harzliche Grüße aus http://www.annerschbarrich.de

                      Tom

                      --
                      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                      Nur selber lernen macht schlau