SESSION-Fehler bei Weiterleitung (header()) auf eine andere Seite,mittels MVC-Pattern

Davicito

Erfahrenes Mitglied
Hi liebe Leut,

ich hab ein seltsamen Fehler (s. Fehlermeldung, ganz unten) bei einer Weiterleitung aus einem UnterKontroller "AuthController"auf meine Seite.
(Siehe Code AuthController, letzter If-Zweig)

AuthController
PHP:
<?php
class AuthController
{		
	public function run(HttpRequest $req, HttpResponse $res)
	{			
		$model = new AuthModel();
		$view = new PSMView();		
		
		$view->setTemplate('LoginTempl');
		print $view->loadTemplate();	
			
		if($req->getParameter('login') && !empty($req->getParameter('bn')) && !empty($req->getParameter('db'))){
			try{					
				$model->login('localhost',$req->getParameter('bn'),$req->getParameter('pw'),$req->getParameter('db'));											
			}
			catch(Exception $e){
				$res->write( $e->getMessage());					
			}			
		}
		if(AuthModel::checkUser() === true){			
			header("Location: http://localhost/test/test.php?authFin=true");
			exit;
		}
	}		
}
?>
durch den Wert true, leite ich meinen FrontController an, den MuenuController zu laden, der wiederum das Template für meine Hauptseite läd. Aber nur wenn die SESSION-Variable is_logged gesetzt wurde.
Was ich bereits mit var_dump($_SESSION['is_logged']) festellen konnte, ist das nach der Weiterleitung, die SESSION verloren gegangen ist.
Aber wieso?

Die statische Methode checkUser() und die login-Methode, in der AuthModel-Klasse
PHP:
...
public function login($host, $bn, $pw, $db)
{				
	$resDB = $this->mysqli = new \mysqli($host, $bn, $pw, 'k&k-psm-'.$db);

	if($resDB && !isset($_SESSION['is_logged'])){ 
		$_SESSION['is_logged'] = true;
		$_SESSION['bn'] = $bn;
		return $resDB;
	}
        else if($resDB) return true;
	else if($this->mysqli->connect_errno){
		throw new \Exception('Verbindung zum DB-Server fehlgeschlagen! ');
	}			
}		
...
public static function checkUser(){
		if(isset($_SESSION['is_logged']) && $_SESSION['is_logged'] === true)
			return true;
		else return false;
}
...

Fehlerausgabe:
PHP:
Notice: Undefined variable: _SESSION in C:\...\MenuController.php on line 22
NULL
 
Zuletzt bearbeitet:
Hallo,

wie wird denn deine SessionID übermittelt? Falls nicht per Cookie musst du die evtl. noch "von Hand" an den Weiterleitungslink anhängen!

MfG
 
Hi drucko,

ich habe meinen Fehler gerade selber entdeckt ^^. ich habe mein session_start(); in der falschen Klasse gesetzt, und daher hat es nicht geklappt.

Hab die jetzt in meiner Model-Klasse eingefügt und die aus dem Kontroller entfern, und somit funktioniert wieder alles bestens ;-)

LG, Davicito.
 
Zurück