<?php
if (isset($_POST['go'])) {
require("class/LevelSilver.class.php");
$superhero = new LevelSilver();
$valEmail = $superhero -> validate("E-Mail Adresse", "validMail", $_POST['Email']);
$valPassword = $superhero -> validate("Passwort", "validPassword", $_POST['pw']);
$valUsername = $superhero -> validate("Username", "validUsername", $_POST['Username']);
// Sind Probleme aufgetreten?
if ($superhero -> hasErrors) {
$feedback = "<div class=\"feedback_negative\">";
$feedback .= "Das Validieren ist fehlgeschlagen. Folgende Fehler sind aufgetreten:<br>";
foreach ($superhero -> errorsArr as $error) {
$feedback .= $error."<br>";
}
$feedback .= "</div>\n";
}
else {
$feedback = "<div class=\"feedback_positive\">";
$feedback .= "Alle Felder sind korrekt ausgefüllt.";
$feedback .= "</div>\n";
}
}
else {
$feedback = "<div class=\"feedback_negative\">";
$feedback .= "Das Formular wurde noch nicht verschickt. Klicke den Submit-Button!";
$feedback .= "</div>\n";
$valEmail = "";
$valPassword = "";
$valUsername = "";
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Level Silver</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Condensed&family=Roboto:ital,wght@0,400;0,500;1,400&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/css/styles.css">
<link rel="stylesheet" href="/css/formstyles.css">
</head>
<body>
<div id="container">
<h1>Level Silver</h1>
<p><img src="../images/medal_silver.png" style="width: 100%; max-width: 84px; height: auto;"></p>
<p>Die Klasse im Level Bronze ist zwar ok, hat aber einen Schönheitsfehler. Jedes Formularfeld ist logisch an eine Methode geknüpft, die Klasse ist somit nicht universell für ein umfangreiches Projekt einsetzbar. Boosten wir die Klasse in das nächste Level.</p>
<h3>Verbesserungen</h3>
<ol>
<li>Die Methoden sollen logisch losgelöst von den Fomularfeldern arbeiten.</li>
<li>Es soll eine zusätzliche Methode zugefügt werden, diese soll das Eingangstor mit einer Art "Weiche" für die Art der Validierung sein.</li>
<li>Das Feedback soll verbessert werden, es soll Hinweise enthalten, bei welchem Feld die Validierung fehlgeschlagen ist</li>
</ol>
<!-- Ausgabe des Feedbacks -->
<?=$feedback?>
<form action="" method="post" novalidate>
<div class="form_control">
<label for="Email">E-Mail Adresse</label>
<input type="email" name="Email" id="Email" value="<?=$valEmail?>" style="width: 240px;">
</div>
<div class="form_control">
<label for="pw">Passwort (zu Übungszwecken nicht maskiert)</label>
<input type="text" name="pw" id="pw" value="<?=$valPassword?>">
</div>
<div class="form_control">
<label for="Username">Username</label>
<input type="text" name="Username" id="Username" value="<?=$valUsername?>">
</div>
<div class="form_control">
<button type="submit" name="go" class="btn btn-blue">Verschicken</button>
</div>
</form>
</div>
</body>
</html>