Pit: Formularfeldüberprüfung

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


  1. :space: ↩︎

  1. 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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom,

      danke für die anregung!

      MfG, Pit