Guten Abend,
sitze mal wieder an nem Formcheck und habe jetzt ein Problem mit meiner foreach-Schleife. Alles was ich will ist, dass wenn ein Fehler erkannt wurde, dass er mir diesen (oder auch mehrere) in einer SESSION speichert, damit ich diese dann auf der nächsten Seite in Form von echo $_SESSION['fehler']['email'] ausgeben kann.
Was mache ich da nun falsch? Er gibt mir
aus, dies ist die erste Zeile in diesem Abschnitt:
Wie lautet hier die korrekte foreach-Schleife?
Vorab schon mal Danke!
sitze mal wieder an nem Formcheck und habe jetzt ein Problem mit meiner foreach-Schleife. Alles was ich will ist, dass wenn ein Fehler erkannt wurde, dass er mir diesen (oder auch mehrere) in einer SESSION speichert, damit ich diese dann auf der nächsten Seite in Form von echo $_SESSION['fehler']['email'] ausgeben kann.
PHP:
error_reporting(E_ALL);
session_start();
//Vorgabenliste für Felder
$FELD_DEFINITION = array();
$FELD_DEFINITION['email'] = array('minlength' => "6", 'maxlength' => "100", 'mandatory' => true, 'characters' => "/^[a-z0-9\-_]?[a-z0-9.\-_]+[a-z0-9\-_]?@[a-z.-]+\.[a-z]{2,}$/i");
//Welche Felder sollen geprüft werden
$felder = array();
$felder = array('email');
//Valid ist zu Beginn auf true;
$valid = true;
//Alle vorgegebenen Felder durchlaufen
foreach($felder as $checkfeld) {
//Inhalt von $_POST['FELDNAME'] in $_SESSION['FELDNAME'] schreiben
$_SESSION[$checkfeld] = $_POST[$checkfeld];
//Inhalte prüfen und bei Fehler in $err_messages den jeweiligen Fehler schreiben
$err_messages = array();
if($FELD_DEFINITION[$checkfeld]['mandatory']==true){
if(empty($_POST[$checkfeld])){
$err_messages[$checkfeld][] = $checkfeld." ist ein Pflichtfeld"; $valid = false;
};
};
if(strlen($_POST[$checkfeld]) < $FELD_DEFINITION[$checkfeld]['minlength']) {
$err_messages[$checkfeld][] = $checkfeld." ist zu klein."; $valid = false;
};
if(strlen($_POST[$checkfeld]) > $FELD_DEFINITION[$checkfeld]['maxlength']) {
$err_messages[$checkfeld][] = $checkfeld." ist zu groß"; $valid = false;
};
if(!preg_match($FELD_DEFINITION[$checkfeld]['characters'], $_POST[$checkfeld])) {
$err_messages[$checkfeld][] = $checkfeld." hat falsche Zeichen"; $valid = false;
};
//Wenn Fehler in aktuellem Feld, Fehler in SESSION schreiben
if(!empty($err_messages[$checkfeld])){
$errors = array();
foreach ($err_messages[$checkfeld] as $errors) {
$_SESSION['fehler'][$checkfeld][] = array($errors);
}
};
}
Was mache ich da nun falsch? Er gibt mir
Code:
Fatal error: Cannot use [] for reading in
PHP:
//Wenn Fehler in aktuellem Feld, Fehler in SESSION schreiben
if(!empty($err_messages[$checkfeld])){
$errors = array();
foreach ($err_messages[$checkfeld] as $errors) {
$_SESSION['fehler'][$checkfeld][] = array($errors);
}
};
Wie lautet hier die korrekte foreach-Schleife?
Vorab schon mal Danke!