Reviewnacharbeitung

This commit is contained in:
2026-06-03 21:27:08 +02:00
parent fae4bc86ad
commit 5a1c032f1b
2 changed files with 37 additions and 102 deletions
+32 -52
View File
@@ -1,63 +1,43 @@
<?php <?php
$error = $error ?? null;
?>
<!-- require_once "php/model/LocalUserDAO.php";
Form: Registrierung require_once "php/validator/user-validator.php";
Funktion: Erstellung neuer Benutzerkonten
-->
<main class="login-page">
<div class="login-container">
<h1>Jetzt Registrieren!</h1> $error = null;
<?php if (!empty($error)): ?> if ($_SERVER["REQUEST_METHOD"] === "POST") {
<p class="alert-message is-error">
<?php echo htmlspecialchars($error); ?>
</p>
<?php endif; ?>
<form method="post" action="index.php?pfad=register"> $email = trim($_POST["email"] ?? "");
$vorname = trim($_POST["vorname"] ?? "");
$nachname = trim($_POST["nachname"] ?? "");
$plainPassword = $_POST["password"] ?? "";
<p class="input-label">Email:</p> if (!userEmailValidator($email)) {
<input type="email" $error = "Bitte gib eine gültige E-Mail-Adresse ein.";
name="email" } elseif (!userNameValidator($vorname)) {
class="login-input" $error = "Der Vorname muss 2 bis 50 Zeichen lang sein und darf nur Buchstaben, Umlaute, Leerzeichen und Bindestriche enthalten.";
placeholder="mustermann@web.de" } elseif (!userNameValidator($nachname)) {
value="<?php echo htmlspecialchars($_POST["email"] ?? ""); ?>" $error = "Der Nachname muss 2 bis 50 Zeichen lang sein und darf nur Buchstaben, Umlaute, Leerzeichen und Bindestriche enthalten.";
required> } elseif (!userPasswordValidator($plainPassword)) {
$error = "Das Passwort muss 8 bis 72 Zeichen lang sein.";
} else {
try {
$dao = new LocalUserDAO();
<p class="input-label">Vorname:</p> $password = password_hash($plainPassword, PASSWORD_DEFAULT);
<input type="text"
name="vorname"
class="login-input"
placeholder="Max"
value="<?php echo htmlspecialchars($_POST["vorname"] ?? ""); ?>"
required>
<p class="input-label">Nachname:</p> $dao->addUser($email, $vorname, $nachname, $password);
<input type="text"
name="nachname"
class="login-input"
placeholder="Mustermann"
value="<?php echo htmlspecialchars($_POST["nachname"] ?? ""); ?>"
required>
<p class="input-label">Passwort:</p> $_SESSION["user"] = $vorname . " " . $nachname;
<input type="password" $_SESSION["user_email"] = $email;
name="password"
class="login-input"
placeholder="Passwort"
required>
<button type="submit" header("Location: index.php");
value="register" exit();
name="registerSubmit"
class="login-button">
kostenlos registrieren
</button>
</form> } catch (InvalidArgumentException $e) {
$error = $e->getMessage();
</div> } catch (Exception $e) {
</main> $error = "Die Registrierung konnte nicht gespeichert werden.";
}
}
}
+5 -50
View File
@@ -1,71 +1,28 @@
<?php <?php
/**
* Prüft, ob der Name die folgenden Bedingungen erfüllt:
* Buchstaben von a-z; A-Z
* Umlaute äöüÄÖÜß
* Leerzeichen und Bindestrich
* 2-50 Zeichen
*
* @param $name
* @return bool
*/
function userNameValidator($name) function userNameValidator($name)
{ {
$name = trim($name); $name = trim($name);
$namePattern = '/^[a-zA-ZäöüÄÖÜß\s-]{2,50}$/u'; $namePattern = '/^[a-zA-ZäöüÄÖÜß\s-]{2,50}$/u';
if (preg_match($namePattern, $name)) { return preg_match($namePattern, $name) === 1;
return true;
} else {
return false;
}
} }
/**
* Prüft, ob die E-Mail-Adresse gültig ist
* und höchstens 100 Zeichen enthält.
*
* @param $email
* @return bool
*/
function userEmailValidator($email) function userEmailValidator($email)
{ {
$email = trim($email); $email = trim($email);
if (filter_var($email, FILTER_VALIDATE_EMAIL) && mb_strlen($email) <= 100) { return filter_var($email, FILTER_VALIDATE_EMAIL) !== false
return true; && mb_strlen($email) <= 100;
} else {
return false;
}
} }
/**
* Prüft, ob das Passwort die folgenden Bedingungen erfüllt:
* 8-72 Zeichen
*
* @param $password
* @return bool
*/
function userPasswordValidator($password) function userPasswordValidator($password)
{ {
$zeichenAnzahl = mb_strlen($password); $zeichenAnzahl = mb_strlen($password);
if ($zeichenAnzahl >= 8 && $zeichenAnzahl <= 72) { return $zeichenAnzahl >= 8 && $zeichenAnzahl <= 72;
return true;
} else {
return false;
}
} }
/**
* Prüft ein optionales Passwort.
* Leeres Passwort ist erlaubt, wenn der Nutzer sein Passwort nicht ändern möchte.
* Wenn ein Passwort eingegeben wurde, gelten die normalen Passwortregeln.
*
* @param $password
* @return bool
*/
function userOptionalPasswordValidator($password) function userOptionalPasswordValidator($password)
{ {
if (!isset($password) || $password === '') { if (!isset($password) || $password === '') {
@@ -73,6 +30,4 @@ function userOptionalPasswordValidator($password)
} }
return userPasswordValidator($password); return userPasswordValidator($password);
} }
?>