PHP-Code in validierung_OOP/03_step/class/LevelSilver.class.php
<?php
class LevelSilver{
// 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;
}
// Weiche, das ist das Eingangstor zum Objekt
function validate($name, $kind, $str) {
// Aufruf der Methode desinfect(), bevor weiter gearbeitet wird
$cleanStr = $this -> desinfect($str);
switch($kind) {
case "validMail";
$this -> isEmailCorrect($name, $cleanStr);
break;
case "validPassword";
$this -> isPasswordCorrect($name, $cleanStr);
break;
case "validUsername";
$this -> isUsernameCorrect($name, $cleanStr);
break;
}
return $cleanStr;
}
// Überprüfen, ob die E-Mail Adresse korrekt ist
function isEmailCorrect($name, $str) {
// Überprüfung mit einem PHP-Filter
if (!filter_var($str, FILTER_VALIDATE_EMAIL)) {
$this -> hasErrors = true;
$this -> errorsArr[] = $name.": Die E-Mail-Adresse ist nicht gültig.";
}
}
// Mit einem Regex überprüfen, ob das Passwort gültig ist
function isPasswordCorrect($name, $str) {
$suchmuster = '/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@%&*-]).\S{8,}$/';
if (!preg_match($suchmuster, $str)) {
$this -> hasErrors = true;
$this -> errorsArr[] = $name.": Das Passwort entspricht nicht den Vorgaben.";
}
}
// Überprüfen, ob der Username den Vorgaben entspricht
function isUsernameCorrect($name, $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($str, " ");
if ($pos === false) {
$nrChars = strlen($str);
if ($nrChars < $min) {
$this -> hasErrors = true;
$this -> errorsArr[] = $name.": Der Username muss mindestens 4 Zeichen enthalten.";
}
if ($nrChars > $max) {
$this -> hasErrors = true;
$this -> errorsArr[] = $name.": Der Username darf maximal 16 Zeichen enthalten.";
}
}
else {
$this -> hasErrors = true;
$this -> errorsArr[] = $name.": Der Username darf keine Leerschläge enthalten.";
}
}
}