Hi leute,
seit einigen Tagen habe ich ein Problem mit meinem Script. Ständig kommt eine meldung
Warning: Illegal offset type in ...
ich weis nicht woran es liegen könnte. Der Fehler tritt bei auf wenn ich versuche Meldungen des Logins anzuzeigen.
Mein Script funktioniert in etwa so:
Ich rufe eine login.php auf, welche eine Instanz meiner Klasse Account erstellt und der Methode LoginAccount, Benutzername, Passwort und Logindaten speichern übergibt.
Die LoginAccount methode Prüft und setzt irgendwas(zb ob die eingabefelder leer sind) und übergibt einen Textnamen an die Klasse Messages. Diese texte werden als Array abgespeichert.
Mit einem Foreach hole ich mir die Texte aus der lang.php und gebe die aus.
Ein paar ausschnitte um es besser nachzuvollziehen:
Die eigentliche Login.class.php:
PHP:
class Login {
public function __toString() {
$account = new Account();
$account->loginAccount($_POST['username'],$_POST['password'],$_POST['logedin']);
foreach(Messages::getMessages() as $message){
$message .= $message.'
';
}
return $messages.'asd';
}
}
Stream::in(new Login());
Hier die loginAccount methode:
PHP:
public function loginAccount($userName,$userPass,$logedIn)
{
$this->userName = $userName;
$this->userPass = $userPass;
$this->logedIn = $logedIn;
if($this->checkEmptyFields()) {
if($this->checkLoginData()) {
$this->setUserRights(self::$userId);
$this->setSessionId(session_id(),self::$userId);
setcookie("lid".$this->cfg->getConfig('general','projectId'),session_id(),(time()+2592000));
if($this->logedIn == 'on') {
$this->setLoginId($_COOKIE["lid".$this->cfg->getConfig('general','projectId')], self::$userId);
}
Messages::addMessage('loginSuccess');
return true;
}else {
Messages::addMessage('wrongLoginData');
return false;
}
}else {
Messages::addMessage('emptyFields');
return false;
}
}
Also ich prüfe da etwas und setze dann eine Meldung
So sieht die Messages klasse aus:
PHP:
class Messages {
private static $message = array();
public static function addMessage($name) {
self::$message[] = $name;
}
public static function getMessages() {
$text = new Language();
$message = self::$message;
self::$message = array();
return $text->getText($message);
}
}
Und zu letzt die Language klasse:
PHP:
class Language {
private $text;
private $languages;
public function __construct() {
$cfg = new Config();
$this->languages = $cfg->getConfig('general','avaliableLangs');
if(is_file('lang/lang_'.$this->languages[$_SESSION['lang']].'.php')) {
include 'lang/lang_'.$this->languages[$_SESSION['lang']].'.php';
}else {
include 'lang/lang_'.$this->languages[$cfg->getConfig('general', 'defaultLang')].'.php';
}
$this->text = $text;
}
public function getText($textName) {
return $this->text[$textName];
}
}
eigentlich greife ich in den Codes nie direkt auf eine Private Variable zu, jedoch verstehe ich nicht wieso diese fehlermeldung kommt.
Hoffe jemand hier sieht mein Fehler
MFG