Formularfeldüberprüfung
Pit
- php
Hallo Programmierexperten,
ich habe ein Problem mit der Formularfeldüberprüfung und hoffe dass Ihr mir irgendwie einen tipp geben könntet wie ich das in den Griff bekomme!
Ein Feld (Nachricht) ist als Pflichtfeld deklariert, als zweites müssen in diesem Feld mindestens 10 Zeichen eingegeben werden und als drittes wird auf Buchstaben sowie Zahlen und einige Sonderzeichen geprüft!
Hier ein teil des Codes:
$nachricht = trim(strip_tags($_POST['nachricht']));
if ($nachricht == '') {
$lsg .= $lero[25];
$error = true;
}
if (!empty($nachricht) AND (strlen($nachricht) < 10)) {
$lsg .= $lero[26];
$error = true;
}
if (!preg_match('#[[1]a-z0-9 ß-_,.:;?!%&+§"²³)(/äöüÄÖÜàèòéáóúù]#i', $nachricht)) {
} else {
$lsg .= $lero[27];
$error = true;
}
Soweit klappt auch alles bis auf eine ganz komische Sache die ich nicht verstehe und das ist wenn ich im Feld 0 eingebe, dann überspringt er einfach die Mindestzeichenlänge! Setze ich aber hinter der 0 z.B. eine 1 (also im Feld steht dann 01), dann gibt er wieder die Warnmeldung aus das mindestens zehn Zeichen eingegeben werden müssen.
Das macht er nur bei der 0, bei anderen Zahlen, Zeichen oder Buchstaben funktioniert das reibungslos!
Danke für eure Anregungen!
Wünsche euch noch ein frohes Weihnachtsfest sowie eine guten Rutsch ins neue Jahr!
Mit freundlichen Grüßen,
Pit
:space: ↩︎
Hello,
schau Dir die Doku zu empty() an
http://www.php.net/manual/en/function.empty.php
Es ist günstiger, die Abfrage folgendermaßen aufzubauen:
1.) rekursiv alle Magic Quotes entfernen aus dem gesamten $_POST-Array
wenn diese eingeschaltet sind
http://www.php.net/manual/en/function.get-magic-quotes-gpc.php
2.) prüfen, ob der Parameter übertragen wurde und welche Länge die daraus
resultierende Variable bekommen hat:
$_error = array();
$_minlen['nachricht'] = 3;
if(isset($_POST['nachricht']))
{
$_POST['nachricht'] = trim($_POST['nachricht']);
if (strlen($_POST['nachricht']) > $_minlen['nachricht']))
{
### weiterarbeiten
}
else
{
$_error['nachricht'] = 'es müssen wenigstens '.$_minlen['nachricht'].'Zeichen angegeben werden';
}
}
else
{
$_error['nachricht'] = 'Feld 'Nachricht' fehlt';
}
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hallo Tom,
danke für die anregung!
MfG, Pit