Ankündigung

Einklappen
Keine Ankündigung bisher.

session_start(): Frames: Wer weiss es?

Einklappen

Neue Werbung 2019

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

  • session_start(): Frames: Wer weiss es?

    Hallo.

    Meine Website hat einige Frames. In einem der Frames beginnt eine Session (session_start()).

    Laeuft so eine Session nur fuer einen bestimmten Frame, oder fuer das gesamte Browserfenster (jene Website)?

  • #2
    du hast nicht verstanden, wie sessions funktionieren.

    eine session beruht auf einer session-id (id = identifikationsname). anhand dieser id ist es möglich alles was du zu deiner session hinzufügst zuzuordnen und dann wieder genau diese daten (anhand der id) verfügbar zu machen.
    wenn nun allen deinen frame seiten diesselbe session-id (vom browser) übergeben wird, funktionierts auch mit frames. im normalfall, mit cookies (die vom browser nur wieder an die seite übergeben werden, die sie generiert hat), heißt das also, das alle deine frame seiten derselben domain angehören müssen. ansonsten wird für jede domain ein eigenes cookie und damit eine eigene session-id generiert...

    RTFM!

    gruß

    Kommentar


    • #3
      jedes Frame ist eine eigene Seite und muss session_start enthalten, um an die Session zu kommen. Die Session ID (und der Name) müssen an die Frames übergeben sein / werden

      Grüße
      Da Psy

      Kommentar


      • #4
        und ohne frames? was ist mit der id wenn savepath nicht paßt

        wenn ich hier kurz einwerfen darf: wie sieht denn der fall folgenderweise aus:
        index.php mit session_start(). in diese datei werden immer nur neue dateien eingebunden (include). somit brauche/darf ich die session ja nur einmal aufrufen. muss ich dennoch die sid über die url übergeben falls etwas mit dem session_save path schiefläuft oder brauche ich das dann nicht weil ja immer wieder die seite selbst aufgerufen wird?

        sprich:
        PHP-Code:
        <?php
        // index.php
        session_start();
        ?>
        oder kann ich mir das sparen und nur session_start() aufrufen? aber dann wäre ja, falls etwas mit dem session_save_path nicht stimmen würde bei jedem aufruf eine neue session und somit id oder?

        edit: hab das grad hier im forum probiert. hab bei meinem browser die cookies deaktiviert. dann übergibt das forum zwar die sid, aber dennoch ist man nicht mehr eingeloggt?! scheinbar doch keine SO einfache und 100%ige sache?

        ich arbeite eigentlich schon länger mit sessions und hatte noch nie probleme. allerdings wohl mit glück weil immer cookies aktiviert waren. denn was man aus keinem manual und quake tutorial usw. rauslesen kann: wenn ich die session id mit der url übergebe, aber cookies deaktiviert habe, nimmt php sich die session id einfach aus dem $_GET array?

        wie wird so ein session management denn nun wirklich korrekt gemacht (inklusive cookie deaktivierung und eventuell eigenem session namen) ohne dass das ganze unschön wird?

        Kommentar


        • #5
          Zitat von brian johnson
          du hast nicht verstanden, wie sessions funktionieren.
          Ich würde eher sagen, Sven hat nicht verstanden wie PHP funktioniert.
          Der Client (zB Browser, aber nicht zwingend!) sendet eine Anfrage an der Server. Dieser leitet die Anfrage an PHP weiter. Die Antwort von PHP sendet der Server dann zurück. Weil PHP meist für HTML-Ausgaben verwendet wird,
          unterstützt PHP ne Menge Sachen für HTML (strip_tags, html_errors, ..).

          Jede Client-Anfrage ist ein PHP-Request. Jeder Frame ist so eine Anfrage. Demnach bekommt PHP bei 3 Frames auf einer Seite auch 3 einzelne Anfragen. In welcher Reihenfolge die Frames geladen werden ist nicht vorhersagbar, du kannst also nicht davon ausgehen, dass die im HTML definierte Reihenfolge auch die Reihenfolge ist, in der PHP die Anfragen abarbeitet. Verlass dich also nicht drauf und setz also keine Session-Variablen, die ein gleichzeitig ladender Frame benötigt.

          Versuch mal auf Frames zu verzichten, du kannst alle Nachteile von Frames prima mit einem scrollbaren <div>-Container und AJAX simulieren. Und das ist nichtmal schwierig.

          @Promaetheus:
          Ist wirklich seltsam, dass man nicht eingeloggt bleibt ohne Cookies. Hab das ganze grade auch getestet. Grundsätzlich sollte das eigentlich verlässlich funktionieren, ich hau Göke mal an.

          Kommentar


          • #6
            Öhm, ich versteh nicht ganz, aber wenn du die Cookies deaktiviert hast, aber die Session ID mit der URL übergibst, nimmt er die auch aus der URL.

            Die Daten selbst (die in der Session) werden ja auf dem Server gespeichert und anhand der Session ID / Name indentifiziert

            Wie war die Frage? Sorry dass ich net so durchcheck

            Grüße
            Da Psy

            Edith:
            In dem Forum werden anscheinend nicht wirklich die Sessions fürs eingeloggt bleiben verwendet sondern Cookies. Oder wie meinen? Ich steh heut irgendwie voll aufm Schlauch bei allem ...

            Kommentar


            • #7
              Ich hatte auch Schwierigkeiten ihn zu verstehen

              Kommentar


              • #8
                Vielen Dank an alle.

                Kommentar


                • #9
                  du kannst alle Nachteile von Frames prima mit einem scrollbaren <div>-Container und AJAX simulieren.
                  Hoppla, das wollte ich anders ausdrücken. Ihr wißt was gemeint war

                  Kommentar


                  • #10
                    He, he, he! Ja, klar!

                    Kommentar


                    • #11
                      Zitat von Zergling
                      Ich hatte auch Schwierigkeiten ihn zu verstehen
                      vielleicht hatte ich mich da zu kompliziert ausgedrückt. ich hatte gedacht wie der optimale ablauf auszusehen hätte. so ungefähr?

                      seite 2 (login.php): schauen ob formular abgeschickt wurde. wenn ja prüfen ob daten ok sind. WENN daten ok sind session starten und wert in die session schreiben. nachschauen ob das cookie am savepath platz gespeichert wurde. wenn nicht (cookies deaktiviert) -> session id an url anhängen.

                      seite 1: um die session nur zu starten wenn es nötig ist vorher nachschauen ob das session cookie (PHPSESSID) gesetzt wurde und/oder die sessionid über die url übergeben wurde. wenn ja session starten. sonst session nicht starten.

                      liege ich so mal richtig?

                      Kommentar


                      • #12
                        Die Session wird automatisch an die URL gehängt, wenn Cookies deaktiviert sind.

                        Kommentar


                        • #13
                          Zitat von Zergling
                          Die Session wird automatisch an die URL gehängt, wenn Cookies deaktiviert sind.
                          Aber auch nur, wenn das in der php.ini so eingestellt ist.


                          Trotzdem versteh ich nicht was Promaetheus andauernd mit dem session.save_path hat. Wenn damit was nicht stimmt bist du so oder so aufgeschmissen egal ob die session-id per cookie oder per url übergeben wird, weil die Session-Daten nirgendwo gespeichert werden können.

                          Kommentar


                          • #14
                            das mit dem save path war blödsinn. mir geht es um folgendes: wenn keine cookies erlaubt sind möchte ich an die url die session id anhängen. dafür wäre es für mich interessant ob php "selbst" nachsieht ob eine sessionid in $_GET vorhanden ist.

                            DENN: wenn ich rewrited urls übergebe, so möchte ich nicht am ende PHPSESSID=...... dranstehen haben, sondern NUR die id. DAS war meine intention dieser fragestellung. kann ich also NUR die id übergeben, wenn ja, wie würde php diese erkennen wenn keine zuweisung mitgegeben wird.

                            Kommentar

                            Lädt...
                            X