IF - ABFRAGE WIE LÖST IHR DAS? PHP?

TechPech1984  29.09.2021, 07:31

webseite oder command line ?

Fragefrage91 
Fragesteller
 29.09.2021, 07:32

ich würde sagen es reicht die command, also sprich if (blablabla ) else blablabla

TechPech1984  29.09.2021, 07:32

das ist ein wichtiger unterschied, den via webseite ist das ein ganz anderer code , wegen der eingaben abfrage .

Fragefrage91 
Fragesteller
 29.09.2021, 07:33

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

Suboptimierer  29.09.2021, 09:34

Fehlt nur noch die eigentliche Aufgabe, die if-Unterscheidung und Reaktion auf die verschiedenen Fälle.
Kommt man mit einem einzigen Pattern zum Ziel?

0
FaTech  29.09.2021, 10:34
@Suboptimierer

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

0
...
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
{
  ...
}
Woher ich das weiß:Berufserfahrung – Programmierer
PixelManuel  29.09.2021, 07:40

Die ganzen Abfragen nach Sonderzeichen kann man eleganter durch einen preg_match() ersetzen.

0
Suboptimierer  29.09.2021, 07:44
@PixelManuel

Joa, dazu muss man die Sprache etwas näher kennen. Ich habe einfach nach einer Funktion gegoogelt, die Zeichen in einer Zeichenkette sucht.

0

Die Eingabelänge würde ich über strlen(string) abfragen.

Die Prüfung der Sonderzeichen über einen RegEx.

Woher ich das weiß:Berufserfahrung – Game Developer mit Lehrerfahrung
PixelManuel  29.09.2021, 07:38

Also

if (strlen(input) < 3) {...}
else if (strlen(input) > 10) {...}

0

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!';
}
Woher ich das weiß:Studium / Ausbildung