Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mal wieder sessions

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mal wieder sessions

    Wahrscheinlich oute ich mich jetzt als absoluter DAU, aber ich habe folgendes Problem. Ich habe in meiner Session eine Variable definiert über die ich abfrage, ob ein Signal gesetzt ist, über mehrere Seitenaufrufe hinweg.

    Auf jeder Seite setze ich am Anfang immer ein include('php_sessions.php');

    php_sessions.php:
    Code:
    <?php
    session_start();
    session_register("cpu_modellx");
    ?>
    Auf der Startseite löse ich per Formular folgendes aus:
    Code:
    $_SESSION['cpu_modellx']=1;
    header("Location:".$spfad."add_modell_cpu.php?".session_name()."=".session_id());
    In der zweiten Seite kehre ich mittels eines Links wieder auf die Ursprungsseite zurück:
    Code:
    echo "Session CPU Modell: $cpu_modellx
    ";
    echo "User: $user_name
    ";
    echo "hier klicken";
    Auf der Ursprungsseite prüfe ich, bevor ich die HTML-Seite aufbaue, ob das Signal gesetzt wurde und setze es ggfs. zurück auf 0:
    Code:
    if ($_SESSION['cpu_modellx']==1)
    {
    $_SESSION['cpu_modellx']=0;
    Die Codeschnipsel sind nur auf das wesentliche gekürzt, aber es sollte alles notwendige drin sein.

    Nun das Problem, dass schon beim Aufruf der zweiten Seite, auf der ich die Session-Variable cpu_modellx abfragen will, diese nicht angezeigt wird.
    Aber eigentlich sollte das doch so funktionieren.

    Zu dem rein technischen:
    PHP 4.3.2, register_globals=on

    Wo liegt hier mein Fehler ? Kann ich den Wert der Variable nicht beliebig oft ändern ?

    Bye,
    Markus


  • #2
    Wenn Du den Client vor Scriptende mit header('Location: ...') wegschickst, mußt Du vorher mit session_write_close() das vorzeitige Schreiben des Session Files erzwingen, weil das Script nach header() vorzeitig terminiert wird, PHP dabei aber keine Daten ins Sessionfile schreibt.

    Kommentar


    • #3
      Danke ... hab die Lösung gefunden

      Nachdem ich nach dem header-Befehl ein exit gesetzt hatte funktionierte es.

      Ich denke mal. dass das Skript wohl ohne den exit weiterbearbeitet wird und dann natürlich an die Stelle kommt, an der abgefragt wird, ob die Session-Variable gesetzt ist und dieses dann wieder zurücksetzt.

      Ich hab zwar in der Doku nichts dazu gefunden, aber vielleicht kann mir das jemand bestätigen.

      Bye,
      Markus

      Kommentar


      • #4
        Re: Danke ... hab die Lösung gefunden

        Zitat von rambrand
        Ich denke mal. dass das Skript wohl ohne den exit weiterbearbeitet wird
        Das Script versucht, weiterzuarbeiten. Allerdings will der Client nix mehr haben, weil er sich ja auftragsgemäß eine neue Resource gewünscht hat.

        Nach header ('Location: ') muß natürlich ein exit stehen, weil sonst der Apache "das Licht ausdreht".

        Da es aber mit exit schon mal Probleme gab (Sessionfile wurde nicht geschrieben), ist es ratsam, mit session_write_close() das Schreiben der Daten in das Sessionfile zu erzwingen.

        Nur für die phpBB Suche:
        Ebenfalls ist zu beachten, daß die Session_id dann mit übergeben werden muß, wenn der Client keinen Keks haben wollte.

        Kommentar

        Lädt...
        X