PHP-Code in validierung_OOP/03_step/class/LevelBronze.class.php
<?php
class LevelBronze {
// Flag für den Status der Validation
public $hasErrors = false;
// Array für die Fehlermeldungen
public $errorsArr = [];
// Schadcode herausputzen
function desinfect($str) {
$str1 = strip_tags($str);
$str2 = preg_replace('/\x00|<[^>]*>?/', '', $str1);
$str3 = str_replace(["'", '"'], [''', '"'], $str2);
$str4 = htmlspecialchars($str3);
$str5 = trim($str4);
return $str5;
}
// Überprüfen, ob die E-Mail Adresse korrekt ist
function isEmailCorrect($str) {
// Aufruf der Methode desinfect(), bevor weiter gearbeitet wird
$cleanStr = $this -> desinfect($str);
// Überprüfung mit einem PHP-Filter
if (!filter_var($cleanStr, FILTER_VALIDATE_EMAIL)) {
$this -> hasErrors = true;
$this -> errorsArr[] = "Die E-Mail-Adresse ist nicht gültig.";
}
return $cleanStr;
}
// Mit einem Regex überprüfen, ob das Passwort gültig ist
function isPasswordCorrect($str) {
// Aufruf der Methode desinfect(), bevor weiter gearbeitet wird
$cleanStr = $this -> desinfect($str);
$suchmuster = '/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@%&*-]).\S{8,}$/';
if (!preg_match($suchmuster, $cleanStr)) {
$this -> hasErrors = true;
$this -> errorsArr[] = "Das Passwort entspricht nicht den Vorgaben.";
}
return $cleanStr;
}
// Überprüfen, ob der Username den Vorgaben entspricht
function isUsernameCorrect($str) {
// Aufruf der Methode desinfect(), bevor weiter gearbeitet wird
$cleanStr = $this -> desinfect($str);
// Minimale Anzahl der Zeichen im Usernamen
$min = 4;
// Maximale Anzahl der Zeichen im Usernamen
$max = 16;
// Hat es Leerschläge im Usernamen?
// Achtung: str_contains() ist einfacher, geht erst ab PHP 8!
$pos = strrpos($cleanStr, " ");
if ($pos === false) {
$nrChars = strlen($cleanStr);
if ($nrChars < $min) {
$this -> hasErrors = true;
$this -> errorsArr[] = "Der Username muss mindestens 4 Zeichen enthalten.";
}
if ($nrChars > $max) {
$this -> hasErrors = true;
$this -> errorsArr[] = "Der Username darf maximal 16 Zeichen enthalten.";
}
}
else {
$this -> hasErrors = true;
$this -> errorsArr[] = "Der Username darf keine Leerschläge enthalten.";
}
return $cleanStr;
}
}