Scriptinitialisierung mit session

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

  • Scriptinitialisierung mit session

    Hallo,

    beim aufruf eines Scripts möcht ich die Sessionvars initialisieren:

    <?
    session_start()
    if (!session_is_registered('var'){$var=wert;session_register('var')}
    ......
    ?>

    beim ersten Aufruf des Scripts speichert er die Variabeln aber nicht in der Session! Erst beim zweiten Aufruf klappts.

    Jemand ne Idee?

    Danke Manfred
    Cocoa Entwicklertraining - Alles für die Apfelzucht

  • #2
    in dem durchlauf des scripten, wo die VAR erst einmal in der session gespeichert wird, kannst du noch nicht auf die session-var zugreifen. das geht erst beim neuladen der seite. das ist auch normal.

    aber nur mal so als tipp... session_register() ist out, also veraltet.

    benutze lieber direkt die superglobal $_SESSION
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Das hier vielleicht?

      Es gibt einen Fehler in PHP 4.2.3 und früheren Versionen. Wenn Sie eine neue Session-Variable mittels session_register() registrieren, referenzieren der Eintrag im globalen Bereich und der $_SESSION-Eintrag bis zum nächsten session_start() nicht den selben Wert. D.h. eine Änderung an der neu registrierten globalen Variablen wird nicht vom $_SESSION-Eintrag widergespiegelt. Dies wurde in PHP 4.3 korrigiert.
      Konrad

      In a world without walls and fences, who needs Windows and Gates ?
      (Sun Microsystems)

      Kommentar


      • #4
        Danke erstmal

        @ Abraxax:

        Heisst das, die Variable wird automatisch registriert, sobald ich

        $_SESSION['var']=wert;

        ausführe?
        Cocoa Entwicklertraining - Alles für die Apfelzucht

        Kommentar


        • #5
          japp
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            O.K.

            ich denk das mit der Initialisierung krieg ich am sichersten hin, indem ich die Seite gleich danach mit header() neulade. Ist zwar lästig aber sollt funktionieren.

            Vielen Dank an Euch
            Cocoa Entwicklertraining - Alles für die Apfelzucht

            Kommentar


            • #7
              wozu neuladen?

              wenn du die variable beim ersten durchgang brauchst, dann arbeite doch mit $var. schließlich setzt du sie ja auch beim erstenmal. solltest sie nur vorher noch mit der $_SESSION nen wert geben (der ja beim erstenmal eben NULL ist) und arbeitest später im script mit $var weiter. dann kannst du bei jedem durchgang damit arbeiten
              ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
              und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

              Kommentar


              • #8
                ich würde aber auch neu laden. so wäre immer gewährleistet, dass in $_SESSION was drin ist. und man muss nicht mit zweierlei variablen rummachen.....
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Seh das auch so wie Abraxax: Der Code wird irgendwie auch sauberer, da man gleich erkennt, was "Umgebungsvariabeln" sind.
                  Cocoa Entwicklertraining - Alles für die Apfelzucht

                  Kommentar


                  • #10
                    mit zweien müßte man auch nicht rum machen.
                    ist nur üblich mit verständnisvolleren vars zu arbeiten.

                    bei scripten die etwas komplexer sind, kriegt man schnell die krise wenn über all $_SESSION zum verarbeiten din steht.

                    aber ist ok. doppelte vars sind also genauso unwichtig wie das neu laden!

                    und damit ihr wißt was ich meine:
                    PHP-Code:
                    <?
                    session_start();
                    if (!isset($_SESSION["var"]))
                    {
                        $_SESSION["var"] = "session_init";
                    }

                    echo $_SESSION["var"] . "<BR>";

                    $_SESSION["var"] = "new_sess_init";
                    echo "<a href='" . $_SERVER["PHP_SELF"] . "'>reload</a>";
                    ?>
                    ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
                    und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

                    Kommentar

                    Lädt...
                    X