Also ich übergebe dem Script ein Namen über ein Formular, dieser Name soll auf Sonderzeichen überprüft werden.
Das Script soll nur Zeichen a-z, A-Z und 0-9 zulassen, also sobald ein Sonderzeichen im Namen ist, soll es eine Fehlermeldung ausgeben.
$in = $_POST['name'];
if(preg_match("/[a-z][A-Z][0-9]/i", $in)) {
echo 'alles in ordnung';
} else { echo 'fehlermeldung'; }
Das Problem dabei ist, dass egal ob der name mit oder ohne Sonderzeichen übergeben wird, immer “fehlermeldung” angezeigt wird.
Okey… also nun ist es so, wenn ich “Dein Loginname” (mit Leerzeichen) eingebe oder einen Text aus zahlen und Sonderzeichen, kommt die Antwort “alles in ordung”, sollte es aber nicht weil Sonderzeichen/Leerzeichen in der Eingabe vorhanden sind.
Wenn ich jetzt eine Eingabe mit Sonderzeichen mache, aber ohne Leerzeichen, dann wird “Fehlermeldung” ausgegeben.
Testen kann man es wenn man auf den Link im Startpost klickt.
Könnte man das Script vielleicht so umschreiben, dass der String auf alle Sonderzeichen und Leerzeichen überprüft wird?
Also ich meine es grob so:
$in = $_POST['name'];
if(preg_match("/[SONDERZEICHEN+LEERZEICHEN]/", $in))
{
echo 'Name besitzt keine Sonderzeichen und Leerzeichen';
}
else
{
echo 'Es wurden Sonderzeichen/Leerzeichen gefunden!!';
}
Also dass das Script den Namen nicht auf a-z/A-Z und 0-9 prüft, sondern ob der Name Sonderzeichen und Leerzeichen enthält.
Wenn ich oben einfach Sonderzeichen eintrage, dann funktioniert es nicht und gibt eine Fehlermeldung vom PHP-Code aus…