SESSION wird nicht überschrieben!

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

  • SESSION wird nicht überschrieben!

    hallo,

    ich habe ein Problem mit meiner SESSION.

    ich fülle sie mit einem array

    PHP-Code:
    $_SESSION['werte'] = $werte
    nun wird beim erneuten Aufruf der Seite, die Session-Variable 'werte' nicht überschrieben, sondern sie wird erweitert.
    Das soll aber nicht passieren. Er SOLL sie überschreiben.

    Ich habe schon versucht sie vorher jedes mal mit
    PHP-Code:
    if (isset($_SESSION['werte'])) unset($_SESSION['werte']); 
    zu leeren.

    aber auch das funktioniert nicht.

    Wie mache ich es, dass er die SESSION-Variable immer überschreibt?!

    Gruß Tim

  • #2
    in deinem schnipselchen kann ich keinen fehler sehen.
    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
      sicher dass du da keinen punkt im spiel hats?

      Kommentar


      • #4
        ich konnte keinen Punkt entdecken.

        Was ich aber mal getetste habe. Wenn ich den
        PHP-Code:
        if (isset($_SESSION['werte'])) unset($_SESSION['werte']); 
        Befehl stehen lasse, und den
        PHP-Code:
        $_SESSION['werte'] = $werte
        Befehl danach auskomemntiere. Leert er die SESSION.

        Das heist das der unset Befehl ausgeführt wird, nur aus irgendeinem Grund füllt er die SESSION danach nicht korekt.

        Kommentar


        • #5
          check mal lieber, dass $werte den richtigen wert hat!

          Kommentar


          • #6
            mach doch ein Test


            lege eine php datei an, zum beispiel sess.php und lade die in dein root, dann rufe die Datei auf und schaue was passiert wenn du die links aufrufst.
            PHP-Code:
            <?php
            session_start
            ();

            $_SESSION['z'] = 1;

            if(!empty(
            $_GET['t'])){
            $_SESSION['z'] = 2;
            }


            echo 
            $_SESSION['z'].'<br>';

            echo 
            '<a href="sess.php">Test A</a><br>';

            echo 
            '<a href="sess.php?t=1">TEST B</a><br>';

             
            ?>
            mfg
            marc75

            <Platz für anderes>

            Kommentar


            • #7
              @marc75

              also der test funktioniert, beim klick auf Test A, gibt er mir 1 aus, bei Test B, 2.

              @TobiaZ
              die werte von $werte stimmen. Es sind bei jedem Aufruf, die Richtigen, auch immer nur einmal.

              Kommentar


              • #8
                füge mal ein paar testausgaben durch. DEIN Fehler sollte innerhalb kürzester Zeit gefunden sein, wenn man vernünftig debugt.

                Kommentar


                • #9
                  werde ich machen, aber eine Frage noch.

                  Könnte es damit zusammenhängen, dass die Datei includet wird. Und die SESSION auf der Seite gestartet wird, die die Ausgabeseite includiert?

                  Kommentar


                  • #10
                    generell, includete dateien werden so behandelt, als wären sie teil der hauptsdatei

                    Kommentar


                    • #11
                      ich kann zwar nicht genau sagen warum, aber ich habe testweise mal den unset befehl ans ende des quellcodes gepackt. und jetzt geht es?!

                      Danke für eure Hilfe

                      Gruß
                      Tim

                      Kommentar


                      • #12
                        noch eine kleine Ergänzung zu meiner Lösung.
                        Das der unset befehl ans Ende des Codes musste war nur ein Teil der Lösung, und ist wahrscheinlich garnicht relevant.

                        Das eigentliche Problem lag daran, dass mein array und die SESSION-Variable beide den Namen 'werte' haben. Damit kam die SESSION nicht zurecht.

                        Kommentar


                        • #13
                          bei unsauberer register_globals on-programmierung könnte das ein problem sein. sehe ich aber nicht so wirklich...

                          Kommentar


                          • #14
                            @Tobiaz

                            Wieso nicht? Wenn $werte global ist, dann bekommt sie bei session_start() die Werte aus SESSION['WERTE']. Wenn nun $werte nun eine Kopie ist, so hat sie auch nach unset (SESSION['WERTE']) noch den gleichen Inhalt.
                            Falls er also $werte nicht mit $werte = array() initialisiert bevor er $werte das erste mal verwendet so werden die neuen Daten einfach angehängt.

                            Oder hab ich da jetzt n Fehler in meiner Denkweise???


                            Bye


                            Bye!

                            Kommentar


                            • #15
                              Wieso nicht? Wenn $werte global ist, dann bekommt sie bei session_start() die Werte aus SESSION['WERTE']. Wenn nun $werte nun eine Kopie ist, so hat sie auch nach unset (SESSION['WERTE']) noch den gleichen Inhalt.
                              Damit hast du vollkommen recht.

                              Das andere kann ich jetzt nicht mehr nachvollziehen. war ne woche nicht hier.

                              Kommentar

                              Lädt...
                              X