Session erlischt unerwarteter Weise

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

  • Session erlischt unerwarteter Weise

    Vielleicht kann mir jemand die folgende Situtation erklären?

    Ich instantiiere die Controllerklasse 'Controller' und erstelle
    dort mein Datenhaltungsobjekt 'Model'.
    Das Model speichert User generated content in Sessions.

    Nach Ausführung des 1. Requests, werden mir
    auch alle Daten des Formulars angezeigt.
    Führe ich nun aber einen 2. Request aus,
    scheint das erstellte Model überschrieben
    und die Daten aus dem 2. Schritt werden dem
    zuerst erstellten Model nicht hinzugefügt...

    Was mache ich falsch, dass die alten Sessiondaten
    immer wieder verloren gehen?

    Code:
    // Formulardatenhaltung
    class Model {
    	// variable where all user data is stored
    	var $session;
    	
    	/* Constructor */
    	function Model() {
    			$this->session = $_SESSION;
    	}
    	
    	/* Setter */
    	function setSession($array) {
    		foreach($array as $key => $value) {
    			$this->session[$key] = $value;
    		}
    	}
    	
    	/* Getter */
    	function getSession() {
    		return $this->session;
    	}
    }
    
    // Steuerungsklasse
    class Controller {
               var $request;
    	var $model;
               var $view;
    	
    	/* Constructor */
    	function Controller($request) {
    		$this->model = new Model();
    		$this->request = $request;
    		$this->view = new View($this->request, $this->model);
    	}
    	
    	public function display(){
    		if (isset($this->request)) {
    			$this->model->setSession($this->request);
    		}
    		
    		return $this->view->getTemplate();
    	}
    
    }

  • #2
    session_start

    Kommentar


    • #3
      Ist berücksichtigt in der index.php...

      Code:
      session_start();
      
      // mvc classes
      include("classes/controller.php");
      include("classes/model.php");
      include("classes/view.php");
      /****************************************/
      
      // merge $_GET and $_POST, no need to look at $_COOKIE.
      $request = array_merge($_GET, $_POST);
      
      // create controller
      $output = new Controller($request);
      
      // display output
      echo $output->display();

      Kommentar


      • #4
        Hallo,

        du liest zwar aus der Session, aber schreibst nicht rein, weil du das Session-Array nur in $this->session kopierst. Versuch's mal mit

        PHP-Code:
            function Model() {
                    
        $this->session = &$_SESSION;
            } 
        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Vielen Dank, das Problem ist gelöst

          Kannst Du mir bitte das UND vor $_SESSION erklären?
          Was ist nun zur vorherigen Version anders?

          kerbstone

          Kommentar


          • #6
            Referenz

            Das bedeutet, dass nicht der Inhalt der Variable, sondern lediglich eine Referenz darauf gespeichert wird.

            Kommentar


            • #7
              Reicht für das Löschen dann eine einfache Funktion

              wie die folgende aus?

              Code:
              function unsetSession() {
              		return $this->session = array();
              	}

              Kommentar


              • #8
                Ich würd es eher "Leeren" nennen.

                Kommentar


                • #9
                  Ok, alles klar

                  Danke.

                  Kommentar

                  Lädt...
                  X