tekstveld aanvaardt geen cijfers en letters in formulier

Status
Niet open voor verdere reacties.

adhemar

Gebruiker
Lid geworden
24 jul 2013
Berichten
16
Ik heb een werkend formulier gemaakt, maar bij het invullen van 'nr' krijg ik de boodschap: Het Nr moet ingevuld worden.
Wat ik invul is bv. 23 bus 6. Wanneer ik alleen "23" of alleen "bus" invul, werkt het naar behoren.
Wat kan fout zijn in de code?

PHP:
<?php
if(isset($_POST['email'])) {
     
    $email_to = "mijn@email.be";
    $email_subject = "Mijn Formulier";

    function died($error) {

        echo "Sommige velden zijn niet ingevuld.<br /><br />";
        //echo "De fouten staan hieronder.<br /><br />";
        echo $error."<br /><br />";
        echo "Ga terug en verbeter de fouten.<br /><br />";
        die();
    }
     
    // validation expected data exists
    if(!isset($_POST['voornaam']) ||
        !isset($_POST['naam']) ||
        !isset($_POST['straat']) ||
        !isset($_POST['nr']) ||
        !isset($_POST['postcode']) ||
        !isset($_POST['plaats']) ||
        !isset($_POST['email']) ||
        !isset($_POST['aantal']) ||
        !isset($_POST['petitie'])) {
        died('Alle velden moeten ingevuld worden');      
    }
     
    $voornaam = $_POST['voornaam']; // required
    $naam = $_POST['naam']; // required
    $straat = $_POST['straat']; // required
    $nr = $_POST['nr']; // required
    $postcode = $_POST['postcode']; // required
    $plaats = $_POST['plaats']; // required
    $email = $_POST['email']; // required
    $aantal = $_POST['aantal']; // not required
    $petitie = $_POST['petitie']; // required
     
    $error_message = "";
//    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
//  if(!preg_match($email_exp,$email)) {
//    $error_message .= 'Het email adres is niet correct.<br />';
// }
    $string_exp = "/^[A-Za-z0-9.'-]+$/";
  if(!preg_match($string_exp,$voornaam)) {
    $error_message .= 'De voornaam moet ingevuld worden.<br />';
  }
  if(!preg_match($string_exp,$naam)) {
    $error_message .= 'De naam moet ingevuld worden.<br />';
  }

  if(!preg_match($string_exp,$straat)) {
    $error_message .= 'De Straat moet ingevuld worden.<br />';
  }
  if(!preg_match($string_exp,$nr)) {
    $error_message .= 'Het Nr moet ingevuld worden.<br />';
  }
  if(!preg_match($string_exp,$postcode)) {
    $error_message .= 'De Postcode moet ingevuld worden.<br />';
  }
  if(!preg_match($string_exp,$plaats)) {
    $error_message .= 'De Gemeente moet ingevuld worden.<br />';
  }
  if(!preg_match($string_exp,$aantal)) {
    $error_message .= 'Het Aantal inwoners moet ingevuld worden.<br />';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    $email_message = "Krottegemsemarkten Petitie\n\n";
     
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
     
    $email_message .= "Petitie: ".clean_string($petitie)."\n\n";
    $email_message .= "Naam: ".clean_string($naam)."\n\n";
    $email_message .= "Voornaam: ".clean_string($voornaam)."\n\n";
    $email_message .= "Adres: ".clean_string($straat)."\n\n";
    $email_message .= "Nr: ".clean_string($nr)."\n\n";
    $email_message .= "Postnr: ".clean_string($postcode)."\n\n";
    $email_message .= "Plaats: ".clean_string($plaats)."\n\n";
    $email_message .= "Email: ".clean_string($email)."\n\n";
    $email_message .= "Aantal inwoners op dit adres: ".clean_string($aantal)."\n\n";

// create email headers
$headers = 'From: '.$email."\r\n".
'Reply-To: '.$email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers); 

header('Location: http://mijnsite.be/bedankt.html');
?>

<?php
}
?>
 
Laatst bewerkt door een moderator:
Waarom doe je dan op alle velden een preg_match? dat is toch nergens voor nodig. gebruik dan alleen een empty()
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan