Hi,
if(!preg_match("/[a-zA-Z]{1}/", $_POST['username'])) $FehlerNr = 1;
Hier wird aber nur der erste Buchsabe geprüft und nicht die restlichen Zeichen.
Nein, hier wird überprüft, ob ein beliebiges Zeichen ein Buchstabe ist.
{1} kannst Du weglassen.
Wenn Du das 1. Zeichen überprüfen willst, mußt Du den Regex am Stringanfang verankern mit ^ (so wie Du es im nächsten Ausdruck gemacht hast).
if(!ereg("^[a-zA-Z0-9_-]{3,100}$", $_POST['username'])) $FehlerNr = 1;
Warum nutzt Du hier ereg? Das Zeug ist veraltet, soll demnächst aus PHP entsorgt werden ...
Hier ist es möglich ein Name wie z. Bsp. 123Teoleo einzugeben.
Natürlich - die 1. Prüfung schlägt z.B. auf das T an, die zweite Prüfung erlaubt Ziffern auch an Position 1.
Du willst aber: 1. Zeichen [a-zA-Z], danach 2 bis 24 mal [a-zA-Z0-9_-] (zumindest laut erstem Posting, hier hast Du 100 statt 25 Zeichen erlaubt).
Also:
/[1][a-zA-Z0-9_-]{2,24}$/
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
a-zA-Z ↩︎