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(["'", '"'], ['&#39;', '&#34;'], $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;
	}
}