Ich habe folgendes Problem:
Ich habe eine index.php, auf der ich via PHP verschiedene HTML-Elemente erstelle, z.B. beim aufrufen der Seite das Login und nach dem Einloggen die Elemente der Hauptseite.
Von der index.php rufe ich die Funktion "getRequest()" vom Controller auf. Dann wird je nach vorhandenen POST-Variablen eine andere Funktion aufgerufen.
Beim Login speichere ich zwei Variablen in die Session ('root' und 'userShort'). Ich kann danach auch darauf zugreifen, aber nach dem Abschicken des Formulars im Hauptbereich sind sie plötzlich weg. Ich nahm an, dass das Problem ist, dass ich beim neuladen der Seite eine neue Instanz des Controllers erstelle.
Das wollte ich damit lösen, dass ich die Instanz in die Session speichere:
Dieser Code wird in index.php bei jedem Laden der seite ausgeführt.
Meine beiden Session-Variablen verschwinden aber dennoch.
Was mache ich falsch?
Ich habe eine index.php, auf der ich via PHP verschiedene HTML-Elemente erstelle, z.B. beim aufrufen der Seite das Login und nach dem Einloggen die Elemente der Hauptseite.
Von der index.php rufe ich die Funktion "getRequest()" vom Controller auf. Dann wird je nach vorhandenen POST-Variablen eine andere Funktion aufgerufen.
PHP-Code:
class DBAdmin_Controller{
public $model = null;
public $gui = null;
function getRequest() {
if ($this->gui == null) {
require_once 'DBAdmin_GUI.php';
$this->gui = new DBAdmin_GUI();
// Instanz des Controllers an die View übergeben
$this->gui->setController($this);
}
if (isset($_POST['username'])) {
$this->loginUser(); // -> in dieser Funktion werden die Session-Variablen gesetzt
} else if (isset($_POST['delete'])) {
$this->deleteDatabase($_POST['selectedDB']); // --> in dieser Funktion rufe ich die besagten Session-Variablen ab
} else if (isset($_SESSION['id'])) {
$this->gui->renderGUI('main');
} else {
$this->gui->renderGUI('login');
}
}
}
Das wollte ich damit lösen, dass ich die Instanz in die Session speichere:
PHP-Code:
<?php
require_once 'php/DBAdmin_Controller.php';
session_start();
if (isset($_SESSION['controller'])) {
$cont = unserialize($_SESSION['controller']);
$cont->getRequest();
} else {
$cont = new DBAdmin_Controller();
$_SESSION['controller'] = serialize($cont);
$cont->getRequest();
}
?>
Meine beiden Session-Variablen verschwinden aber dennoch.
Was mache ich falsch?
Kommentar