2013-10-03 66 views
1

我有一個客戶端驗證和一些服務器驗證(正則表達式)的HTML表單。 但我不能得到正則表達式與html表單一起工作,並且可以在沒有任何輸入的情況下提交表單。我一直堅持這幾個小時,啊。任何能理解爲什麼?無法讓我的正則表達式來驗證我的HTML表格

這是HTML表單

<form action="brukerinfo.php" method="post" name="kontaktskjema" id="kontaktskjema"> 

     <h3>Registrer din informasjon her</h3> 
     <div> 
       <label> 
         <span>Fornavn: (påkrevd)</span> 
         <input name="fornavn" id="fornavn" placeholder="Fornavn" type="text" tabindex="1" pattern="^[a-zA-ZæøåÆØÅ]{2,}$" 
         title="Fornavn er påkrevd, og må være minst 2 tegn" required autofocus> 
       </label> 
     </div> 
     <div> 
       <label> 
         <span>Etternavn: (påkrevd)</span> 
         <input name="etternavn" id="etternavn" placeholder="Etternavn" type="text" tabindex="2" pattern="^[a-zA-ZæøåÆØÅ]{2,}$" 
         title="Etternavn er påkrevd, og må være minst 2 tegn og kan ikke bestå av mellomrom" required> 
       </label> 
     </div> 
     <div> 
       <label> 
         <span>Email:</span> 
         <input name="email" id="email" type="email" placeholder="Skriv inn din mailadresse" tabindex="3"> 
       </label> 
     </div> 
     <div> 
       <label> 
         <span>Telefon: (påkrevd) </span> 
         <input name="telefon" id="telefon" placeholder="Skriv inn ditt telefonnummer" type="tel" tabindex="4" 
         pattern="[0-9]{8}" title="Må bestå av 8 siffer" required> 
       </label> 
     </div> 
      <div> 
       <label> 
         <span>DOB:</span> 
         <input name="fdag" id="fdag" type="date" tabindex="5" required> 
       </label> 
     </div> 

     <div> 
       <button name="submit" type="submit" id="kontaktskjema-submit">Send inn</button> 
     </div> 

</form> 
</div> 
</div> 

enter code here 

這個我正則表達式驗證,

<? 
//preg_match for email 
    $email = $_POST['email']; 
    $emailregex = '[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,4}'; 

    if(isset($_POST['email'])) { 
    if (!preg_match($emailregex, $email)) { 
     echo 'invalid email'; 
    } 
    } 

    //validating the phone number 
    $telefon = $_POST ['telefon']; 
    $telmatch = array('98979695' ,'97969594','90807090','90908080','40908070','45674849','46573823','45343456'); 

    if(isset($_POST['telefon'])){ 
     if(!preg_match($telefon, $telmatch)){ 

      echo 'invalid phone number'; 

      } 
     } 

    //validatin the date 
    $fdag = $_POST['fdag']; 

    if(isset($_POST['fdag'])) { 

    if(preg_match('/(0[1-9]|[1-2][0-9]|3[0-1])-(0[1-9]|1[0-2])-^[0-9]{4}$/', $fdag)) 

    { 
     if(date(Y, time()) - date(Y,strtotime($fdag)) > 16){ 
      echo 'invalid date'; 
     } 
     else 
     { 
      echo 'you have to be at least 16'; 
     } 
    } 
    } 
    ?> 
+0

所以驗證電子郵件在PHP中,你」迴應驗證錯誤,但您在哪裏處理它們? – ChristopheBrun

+0

爲什麼您不使用語言提供的默認庫。至於jQuery你可以使用validate.js它會自動使你的生活。它可能如果你想在一個領域驗證然後它的好。但對於服務器端,我建議使用'PHP_FILTERS'來匹配電子郵件模式。 – Roopendra

+0

好問題,哈哈。我在包含html表單的php文件中包含了php驗證文件。我如何處理表單中的回顯? – user2838805

回答

1

您可以通過使用filters

$email = $_POST['email']; 

if(isset($email)) { 
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     echo 'invalid email'; 
    } 
}