stimmt, implode() war es was ich gesucht habe. Damit ich das ganze noch n bisschen besser hinbekomme, würde ich in der check.php das implode direkt einbauen und als einen langen string in der SESSION speichern. Also:
Dies scheint auch ohne Probleme zu gehen. Hier der aktuelle Code:
yaslaw, es entstehen mir durch dieses Script nur $_SESSION['email'] sowie $_SESSION['fehler']['email']. Muss ich weitere Arrays löschen, oder ist das so okay? Gibt es noch Beanstandungen am Script?
Werde jetzt noch die Reihenfolge der einzelnen Checks ändern und verschachteln. Außerdem nehme ich meine DB-Abfrage am Ende dazu und bei einem Fehler lasse ich diesen Fehler ebenfalls per implode in die SESSION schreiben.
Aber so müsste doch alles gut sein, oder?
PHP:
if(!empty($err_messages[$checkfeld])){
$vor_session['fehler'][$checkfeld] = $err_messages[$checkfeld];
$_SESSION['fehler']['email'] = implode('<br />', $vor_session['fehler']['email']);
};
Dies scheint auch ohne Probleme zu gehen. Hier der aktuelle Code:
PHP:
//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", 'characters_err' => "Bitte gib eine gültige E-Mail Adresse ein.");
//Welche Felder sollen geprüft werden
$felder = array();
$felder = array('email');
//Valid ist zu Beginn auf true;
$valid = true;
//Alle vorgegebenen Felder durchlaufen
$err_messages = array();
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[$checkfeld] = array();
if($FELD_DEFINITION[$checkfeld]['mandatory']==true){
if(empty($_POST[$checkfeld])){
$err_messages[$checkfeld][] = "<img src='formularfehler.jpg' width='15px' height='15px'>Dieses Feld ist ein Pflichtfeld.";
$valid = false;
};
};
if(strlen($_POST[$checkfeld]) < $FELD_DEFINITION[$checkfeld]['minlength']) {
$err_messages[$checkfeld][] = "<img src='formularfehler.jpg' width='15px' height='15px'>Dieses Feld muss mindestens ".$FELD_DEFINITION[$checkfeld]['minlength']." Zeichen lang sein.";
$valid = false;
};
if(strlen($_POST[$checkfeld]) > $FELD_DEFINITION[$checkfeld]['maxlength']) {
$err_messages[$checkfeld][] = "<img src='formularfehler.jpg' width='15px' height='15px'>Dieses Feld darf maximal ".$FELD_DEFINITION[$checkfeld]['maxlength']." Zeichen lang sein.";
$valid = false;
};
if(!preg_match($FELD_DEFINITION[$checkfeld]['characters'], $_POST[$checkfeld])) {
$err_messages[$checkfeld][] = "<img src='formularfehler.jpg' width='15px' height='15px'>".$FELD_DEFINITION[$checkfeld]['characters_err']."";
$valid = false;
};
//Wenn Fehler in aktuellem Feld, Fehler in SESSION schreiben
if(!empty($err_messages[$checkfeld])){
//Fehler in ein Array speichern
$vor_session['fehler'][$checkfeld] = $err_messages[$checkfeld];
//Array zusammenführen und in SESSION speichern
$_SESSION['fehler'][$checkfeld] = implode('<br />', $vor_session['fehler'][$checkfeld]);
};
}
//Prüfen ob Vorprüfungen alle korrekt
if($valid) {
yaslaw, es entstehen mir durch dieses Script nur $_SESSION['email'] sowie $_SESSION['fehler']['email']. Muss ich weitere Arrays löschen, oder ist das so okay? Gibt es noch Beanstandungen am Script?
Werde jetzt noch die Reihenfolge der einzelnen Checks ändern und verschachteln. Außerdem nehme ich meine DB-Abfrage am Ende dazu und bei einem Fehler lasse ich diesen Fehler ebenfalls per implode in die SESSION schreiben.
Aber so müsste doch alles gut sein, oder?
Zuletzt bearbeitet: