IF - ABFRAGE WIE LÖST IHR DAS? PHP?
Ich selbst bekomme das gerade nicht so hin, zeigt mal wie ihr es gelöst habt.
Keine Sorge werde mich damit beschäftigen, nur das finde ich halt echt schwierig.
AUFGABE:
Der Benutzer soll seinen Namen eingeben können. Wenn der Benutzername kleiner 3 Zeichen ist, kommt eine Fehlermeldung, dass der der Benutzername länger sein muss. Bei 3 bis 10 Zeichen ist der Benutzername in Ordnung. Über 10 Zeichen darf der Name nicht sein. Dann erhält der Benutzer eine Meldung, dass er den Namen kürzen soll. Zusätzlich dürfen in dem Benutzernamen keine Umlaute enthalten sein (ü,ä,ö). Sollten Umlaute enthalten sein, dann erhält der Benutzer eine Meldung, dass er keine Umlaute nutzen darf.
Programmiersprache ist ?
php ups :D
webseite oder command line ?
ich würde sagen es reicht die command, also sprich if (blablabla ) else blablabla
das ist ein wichtiger unterschied, den via webseite ist das ein ganz anderer code , wegen der eingaben abfrage .
nur die if abfrage, also command line glaub ich.
4 Antworten
Mit der Hilfe von preg_match kannst du eine Prüfung machen:
https://www.php.net/manual/de/function.preg-match.php
Das pattern dazu wäre wie folgt:
^[0-9a-zA-Z]{3,10}$
Erklärung zum Pattern:
^ ... $ Das Match muss von Anfang bis Ende des Strings passen
[0-9a-zA-Z] Erlaube Zahlen, Kleinbuchstaben und Großbuchstaben: ÄÖÜ ist nicht teil von a-z und wird somit nicht als gültig erachtet. Würde man es haben wollen, müsste man es noch hinzufügen. Solltest du noch sowas wie Unterstrich erlauben wollen, könntest du es wie folgt hinzufügen: ... [0-9a-zA-Z_] ... Also einfach als Zeichen anhängen. Solltest du ein Minus haben wollen, muss es \- sein und nicht -, da - als das Zeichen für von bis erkannt wird
{3,10} Prüft, ob es mindestens 3 und maximal 10 Zeichen lang ist
Nein, das stimmt. Aber damit könnte man einen allgemeinen Check machen. Die größer kleiner Fälle kann man somit ins else if auslagern. Somit werden die nur gecalled, wenn man sie auch braucht. Wenn es zutrifft, braucht man sie ja nicht
...
if(strlen($User)<3)
echo "Der Benutzername muss länger sein.</br>"
else if(strlen($User)>10)
echo "Der Benutzername muss kürzer sein.</br>"
else if(str_contains($User, "ä") || str_contains($User, "ö") || str_contains($User, "ü"))
echo "Der Benutzername darf keine Umlaute enthalten."
else
{
...
}
Die ganzen Abfragen nach Sonderzeichen kann man eleganter durch einen preg_match() ersetzen.
Joa, dazu muss man die Sprache etwas näher kennen. Ich habe einfach nach einer Funktion gegoogelt, die Zeichen in einer Zeichenkette sucht.
Ich wollte auch nichts gegen deine funktionierende Variante sagen 🙂
Die Eingabelänge würde ich über strlen(string) abfragen.
Die Prüfung der Sonderzeichen über einen RegEx.
Das hier dürfte funktionieren ^^
<?php
$user = "nutzer";
//Length Check
if (strlen($user) > 3 && strlen($user) < 10) {
//Check auf ä,ö,ü
$pattern = "/^[a-zA-Z0-9._]+(?<![_.])$/";
preg_match($pattern, $user, $match);
if (!$match) {
echo 'Der Nutzername darf keine Sonderzeichen enthalten!';
}
else {
echo $user;
}
}
else if (strlen($user) < 3) {
echo 'Der Nutzername muss mehr als 3 Buchstaben beinhalten!';
}
else if (strlen($user) > 10) {
echo 'Der Nutzername darf nicht mehr als 10 Buchstaben beinhalten!';
}
Fehlt nur noch die eigentliche Aufgabe, die if-Unterscheidung und Reaktion auf die verschiedenen Fälle.
Kommt man mit einem einzigen Pattern zum Ziel?