Merkwürdiger Fehler mit einem Exception

Davicito

Erfahrenes Mitglied
Guten Abend,

ich melde mich wieder weil mir eine Fehlermeldung angezeigt wird und ich gerad nicht weiß, wieso dieser kommt, oder von was dieser ausgelößt wird!


PHP:
Fatal error: Uncaught exception 'Exception' with message 'Verbindung zum DB-Server fehlgeschlagen! ' in C:\..\AuthModel.php:33 Stack trace: #0 C:\...\AuthController.php(45): ...\AuthModel::login('localhost', 'sdfgs', '', 'berlin') #1 C:\...\FrontController.php(33): ...\AuthController->run(Object(...\HttpRequest), Object(...\HttpResponse)) #2 C:\...\Test.php(25): ...\FrontController->run(Object(...\HttpRequest), Object(...\HttpResponse)) #3 {main} thrown in C:\...\AuthModel.php on line 33

Es handelt sich hierbei um ein Login, der auch gut funktioniert, solange man ein Usernamen, Passwort angibt und eine Datenbank auswählt.
Nun wollte ich das Ganze mal auf Fehlereingaben hin prüfen und hab, bei der Eingabe, nur einen User, ohne Passwort, eingegeben. Darauf sollte natürlich eine Exception geworfen werden, was ja auch normal wäre.
Bis zu dieser Fehlermeldung, wie oben gezeigt.

Die Klasse in der der Fehler verursacht wird.
AuthModel
PHP:
<?php
namespace ...\Model;

session_start();
...

private static $resDB;
		
public function __construct(){
	self::$resDB = null;
}

public static function login($host, $bn, $pw, $db)
{				
	self::$resDB = @new \mysqli($host, $bn, $pw, $db);
		
	if(self::$resDB === null && !isset($_SESSION['is_logged'])){ 
		$_SESSION['is_logged'] = true;
		$_SESSION['bn'] = $bn;
		self::loadRights();	//Methode setzt passende Userrechte in die Session
		return true;
	}else if(!self::$resDB || self::$resDB->connect_error)				
		throw new \Exception('Verbindung zum DB-Server fehlgeschlagen! ');	
}
...

Könnt Ihr mir sagen, was bei mir falsch ist?

LG!
 
PHP:
throw new \Exception('Verbindung zum DB-Server fehlgeschlagen! ');

Tjoa, wenn du die nicht catched, kommt dadurch die entsprechende Ausgabe zustande ;)
 
Arrr... hatte ganz vergessen den Teil zu posten, in dem die Exception gefangen wird ;-)

Klasse in dem die Exception gefangen wird.
AuthController
PHP:
...
if($req->getParameter('login') && !empty($req->getParameter('bn')) && !empty($req->getParameter('db'))){
	try{					
		echo AuthModel::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://.../test.php");
	exit();					
}
...

Aber trotzdem noch der Fehler!

LG.
 
Da ich mit namespaces arbeite, hab ich noch ein Slash im chatch-Block vergessen zu setzten.

PHP:
...try{                    
        echo AuthModel::login('localhost',$req->getParameter('bn'),
                             $req->getParameter('pw'),
                             $req->getParameter('db'));                            
    }catch(\Exception $e){
        $res->write( $e->getMessage());                    
    }            
...

dann hat auch wieder alles bestens funktioniert ^^

LG, Davicito.
 
Zurück