<?php
class ValidationUsername {
// 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 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;
}
}