"Session initialisation failed" - Richtiger Umgang mit Sessions ...

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

  • "Session initialisation failed" - Richtiger Umgang mit Sessions ...

    Wie gehe ich mit Sessions richtig um?

    Vor kurzer Zeit habe ich mit Begeisterung Postnuke entdeckt. Nun stellt sich mir ein Problem, wo ich einfach nicht mehr weiter weiß.

    Ich würde gerne erreichen, daß die index.php von Postnuke nicht direkt aufgerufen werden kann, sondern nur, wenn die index.php von einer bestimmten anderen Datei geladen wird, in meinem Fall loader.html.

    Da der Referer kein sicheres Abfragekriterium dafür ist, habe ich es mit der hier vorgestellten Methode versucht:
    Analog dazu starte ich in der loader.html (wird durch htaccess - 'AddType application/x-httpd-php .html' - mit php geparst) eine Session, vergebe eine Variable ($_SESSION['ticket'] = "admitone"), die ich in der index.php [nach session_start()] abfrage. Ist sie auf "admitone" gesetzt, wird mit der index.php fortgefahren, wenn nicht: die("Index.php kann nicht direkt aufgerufen werden.") - also Ausstieg. - Soweit der Versuch.

    Leider klappt das nur einmal. Bei jedem weiteren Seitenaufruf, etwa durch 'Neu laden' / refresh, erhalte ich "Session initialisation failed" (tatsächlich mit 's' geschrieben, nicht mit 'z'). - Und zwar entsteht der Fehler an der Stelle, an der ich in der index.php session_start() verwende, um anschließend auf die ticket-Variable zuzugreifen. Die Fehlermeldung wird von Postnuke geliefert. Ich vermute, daß der Grund der Meldung damit zu tun hat, daß meine Session mit einer von Postnuke genutzten in Konflikt gerät. Vielleicht, weil dafür die erste Session erst geschlossen werden muß? Das würde das Problem noch schwieriger machen, da ja die Variable 'ticket' auf "admitone" gesetzt bleiben muß, solange Postnuke aktiv ist, damit auch Postnuke auf seine Startseite index.php verweisen kann. Aber das sollte eben nur mit dem mitgegebenen Ticket möglich sein. (Übrigens funktioniert Postnuke wieder prima, wenn ich mein Skript auskommentiere, genauer: wenn ich keine eigene Sessions starte.) Hmm ...

    Es scheint mir, als hätte ich da etwas ganz Grundlegendes bei Sessions oder bei Postnuke nicht verstanden.

    Eigentlich ist mein Ziel ja nur, in der loader.html eine Variable zu setzen (eine Art Ticket), welche ich in der index.php von Postnuke abfragen kann.
    Gibt es da vielleicht noch ganz andere Möglichkeiten?

    Ist das Problem überhaupt lösbar?

    Wo liegt mein Denkfehler? Weiß irgend jemand Rat?

  • #2
    Re: "Session initialisation failed" - Richtiger Umgang mit Sessions ...

    Original geschrieben von Mason-K
    Bei jedem weiteren Seitenaufruf, etwa durch 'Neu laden' / refresh, erhalte ich "Session initialisation failed" (tatsächlich mit 's' geschrieben, nicht mit 'z').
    was ist an der britischen schreibweise so verwunderlich?


    zum problem: wenn du session_start() zum zweiten mal aufrufst, ist doch klar, dass das murks ergibt.
    warum willst du denn überhaupt eine zweite session verwenden, warum legst du deine variable nicht einfach in der bereits vorhandenen session ab?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo wasagah,

      vielen Dank für Deine schnelle Antwort!

      (Übrigens wird 'initialization' im Englischen tatsächlich mit 'z' geschrieben, aber das nur nebenbei.)

      Zum Problem:
      Leider bin ich noch ein totaler Anfänger, was PHP und sessions angeht. Aber vielleicht kannst Du mir auf die Sprünge helfen?

      Ich würde nämlich sehr gerne die Variable in einer vorhandenen Session hinterlegen, aber mache ich das im Zusammenspiel mit Postnuke?

      Das Problem ist für mich, daß die loader.html vor der index.php von Postnuke geladen wird und dort insofern zum ersten Mal eine Session gestartet werden muß. Ich weiß aber nicht, wie ich in der index.php von Postnuke auf diese Session, die in der loader.html gestartet wurde, zurückgreife (also die Session aus der loader.html fortsetze und die Variable 'ticket' abfrage, bevor Postnuke selber geladen wird).
      Ich könnte mir als weitere Schwierigkeit dann vorstellen, daß Postnuke selber eine Session startet und so mit meiner in der loader.html gestarteten in Konflikt gerät. Wie müßte ich dann weitermachen?

      Vielleicht habe ich das Beispiel, an dem ich mich orientiert habe, auch nicht richtig verstanden. Dort wird ja tatsächlich zwei Mal eine Session gestartet, in zwei Dateien. Allerdings bezieht sich das Beispiel ja auf die Zugänglichkeit von Dateien, aber ich dachte, ich könnte es analog handhaben.

      Hoffentlich stelle ich hier nicht zu 'doofe' Newbie-Fragen! Aber ich weiß irgendwie immer noch nicht so recht weiter ...

      Kommentar


      • #4
        Original geschrieben von Mason-K
        (Übrigens wird 'initialization' im Englischen tatsächlich mit 'z' geschrieben, aber das nur nebenbei.)
        OffTopic:

        initialisation (britisch) vs. initialization (amerikanisch)
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Besten Dank für den Hinweis.

          Gibt es noch eine Möglichkeit, mir bei dem Session-Problem zu helfen? Oder habe ich mich schon zu sehr auf meinem Holzweg verirrt?
          Zuletzt geändert von Mason-K; 10.03.2004, 04:11.

          Kommentar


          • #6
            session_start()

            wenn du session_start() zum zweiten mal aufrufst, ist doch klar, dass das murks ergibt.
            Hallo wasagah,

            session_start() muß sowohl in der loader.html als auch in der index.php aufgerufen werden, sonst wird die Session nicht initialisiert. D. h. ich muß durchaus am Anfang von loader.html und am Anfang von index.php session_start() aufrufen. Soweit funktioniert es, ich habe es ausprobiert, indem ich einfach mal eine eigene index.php ohne den Postnuke-Programmteil verwendet habe: und schon funktionierte es genauso, wie ich es mir vorgestellt hatte.

            Aber Du hast dennoch Recht: Insofern, als das ja tatsächlich ein zweites Mal session_start() in der index.php verwendet wird, und zwar nicht von mir, sondern über die in der index.php von Postnuke inkludierten pnApi.php, die wiederum die pnSession.php enthält, in der das session_start() für die Postnuke-Session verwendet wird.

            Dort entsteht der Konflikt und demzufolge die og. Fehlermeldung.

            Also habe ich in die pnSession.php meine Abfrage nach dem session_start() eingebunden. Dort ist dann aber meine $ticket-Variable aus der loader.html seltsamerweise nicht mehr belegt.

            Wie und wo muß ich also die $ticket-Abfrage einbringen (im Zusammenspiel mit Postnuke, einzeln klappt es ja schon ...)?

            Kann mir da nicht doch jemand irgendwie auf die Sprünge helfen?

            (Bin schon ganz verzweifelt an diesem Problem.)

            Kommentar

            Lädt...
            X