2012-06-27 2 views
0

내가하려는 것은 같은 페이지에 폼의 valadiation을 넣는 것입니다. 문제는 이미 페이지를 방문하면 오류가 표시된다는 것입니다. 이전에 양식을 작성한 후에 오류가 표시되어야합니다.동일한 페이지에서 PHP 폼 유효성 검사가 빠릅니다.

<html> 
<head> 
    <title>Westpop</title> 
    <link rel="stylesheet" href="opmaak.css"> 
</head> 
<body> 
    <fblack> 
    <div id="header"><a href="Index.php"></a></div> 

    <div id="registreer"> 
     <table cellpadding="5" align="center"> 
      <th colspan="2" align="left">Registeren</th> 
      <form name="registreren" method="post" action="registreer.php"> 
       <tr> 
        <td><fblackbold>Inloggegevens:<fblackbold></td> 
       </tr> 

       <tr> 
        <td>Email</td> 
        <td><input type="text" size="50" placeholder="[email protected]" name="email"></td> 
       </tr> 
       <tr> 
        <td>Wachtwoord</td> 
        <td><input type="password" size="50" placeholder="min. 8 tekens, één hoofdletter, één cijfer" name="wachtwoord"></td> 
       </tr> 
       <tr> 
        <td><fblackbold>Persoonlijke gegevens:<fblackbold></td> 
       </tr> 
       <tr> 
        <td>Voornaam</td> 
        <td><input type="text" size="50" placeholder="" name="voornaam" ></td> 
       </tr> 
       <tr> 
        <td>Achternaam</td> 
        <td><input type="text" size="50" placeholder="" name="achternaam"></td> 
       </tr> 
       <tr> 
        <td>Geboorte Datum</td> 
        <td><input type="text" size="50" placeholder="jjjj-mm-dd" name="geboortedatum"></td> 
       </tr> 
       <tr> 
        <td>Geslacht</td> 
        <td> 
         M <input type="radio" size="50" value="m" name="geslacht"> 
         V <input type="radio" size="50" value="v" name="geslacht"> 
        </td> 

       </tr> 
       <tr> 
        <td>Adres</td> 
        <td><input type="text" size="50" placeholder="Straat 00" name="adres"></td> 
       </tr> 
       <tr> 
        <td>Woonplaats</td> 
        <td><input type="text" size="50" placeholder="" name="woonplaats"></td> 
       </tr> 

       <tr> 
        <td>Telefoonnummer</td> 
        <td><input type="text" size="50" placeholder="min. 9 tekens" name="telefoonnummer"></td> 
       </tr> 
       <tr> 
        <td>Functie</td> 
        <td> 
         <select name="functie"> 
          <option value="catering">Catering</option> 
          <option value="muziekpodia">Muziek en podia</option> 
          <option value="vervoerovernachten">Vervoer en overnachten</option> 
          <option value="logistiekbeveiliging">Logistiek en beveiliging</option> 
          <option value="diversen">Diversen</option> 
         </select> 
        </td> 
       </tr> 
       <tr align="right"> 
        <td></td> 
        <td><input type="reset" value="Wissen"><input type="submit" name="verzenden" value="Verzenden"></td> 
       </tr> 
      </form> 
     </table> 

     <?php 

      $host = "localhost"; 
      $gebruikersnaam = "root"; 
      $wachtwoord = ""; 
      mysql_connect($host, $gebruikersnaam, $wachtwoord); 

      $demooistedatabase = "c5g4westpopintranet"; 
      mysql_select_db($demooistedatabase); 

      $achternaam = $_POST["achternaam"]; 
      $voornaam = $_POST["voornaam"]; 
      $gbdatum = $_POST["geboortedatum"]; 
      $email = $_POST["email"]; 
      $geslacht = $_POST["geslacht"]; 
      $wachtwoord = $_POST["wachtwoord"]; 
      $woonplaats = $_POST["woonplaats"]; 
      $adres = $_POST["adres"]; 
      $telefoonnummer = $_POST["telefoonnummer"]; 
      $functie = $_POST["functie"]; 


      $achternaam = stripslashes($achternaam); 
      $voornaam = stripslashes($voornaam); 
      $gbdatum = stripslashes($gbdatum); 
      $email = stripslashes($email); 
      $geslacht = stripslashes($geslacht); 
      $wachtwoord = stripslashes($wachtwoord); 
      $woonplaats = stripslashes($woonplaats); 
      $adres = stripslashes($adres); 
      $telefoonnummer = stripslashes($telefoonnummer); 
      $functie = stripslashes($functie); 

      $query = "INSERT INTO 
         vrijwilliger (voornaam, achternaam, gbdatum, geslacht, wachtwoord, woonplaats, adres, telefoonnummer, functie, activiteitID, groepID, email) 
         VALUES 
         ('$voornaam', '$achternaam', '$gbdatum', '$geslacht', '$wachtwoord', '$woonplaats', '$adres', '$telefoonnummer', '$functie', null, null, '$email')"; 

      $foutloos=true; 

      if(preg_match("/^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/", $wachtwoord) === 0) { 
       echo '<fblack>Wachtwoord moet minstens 8 tekens lang zijn, een kleine letter, grote letter én cijfer bevatten.<br><fblack>'; 
       $foutloos = false; 
      } 

      if(preg_match("/^[0-9]{10}+$/", $telefoonnummer) === 0) { 
       echo '<fblack>Het telefoonnummer moet 10 cijfers bevatten.<br><fblack>'; 
       $foutloos = false; 
      } 

      if(preg_match("/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/", $gbdatum) === 0) { 
       echo '<fblack>Geboorte datum moet op dit formaat ingevoerd worden: JJJJ-MM-DD<br><fblack>'; 
       $foutloos = false; 
      } 

      if(preg_match("/^[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}$/i", $email) === 0) 
      { 
       echo '<fblack>Email moet hier op lijken: [email protected]<br><fblack>'; 
       $foutloos = false; 
      } 

      if(preg_match("/^[A-Z][a-zA-Z -]+$/", $voornaam) === 0) { 
       echo '<fblack>Voornaam is niet geldig ingevoerd, heeft u een hoofdletter gebruikt?<br><fblack>'; 
       $foutloos = false; 
      } 

      if(preg_match("/^[A-Z][a-zA-Z -]+$/", $achternaam) === 0) 
      { 
       echo '<fblack>Achternaam is niet geldig ingevoerd, heeft u een hoofdletter gebruikt?<br><fblack>'; 
       $foutloos = false; 
      } 

      if($geslacht == '') { 
       echo '<fblack>U heeft uw geslacht niet aangegeven.<br><fblack>'; 
       $foutloos = false; 
      } 

      if(preg_match("/^[a-zA-Z]+\ +[0-9]+$/", $adres) === 0) { 
       echo '<fblack>Het adres is verkeerd ingevoerd.<br><fblack>'; 
       $foutloos = false; 
      } 

      if(preg_match("/^[a-zA-Z\s]+$/", $woonplaats) === 0) { 
       echo '<fblack>De woonplaats is verkeerd ingevoerd.<br><fblack>'; 
       $foutloos = false; 
      } 

      if($foutloos == true) { 
       mysql_query($query) or die('<fblack>U staat al in ons systeem<A HREF="javascript:javascript:history.go(-1)"><br><br>Klik hier om terug te gaan</A><fblack>'); 
       echo "<fblack>Uw registratie is succesvol verwerkt!<br>Log <a href='login.php' MEDIA=screen>hier</a> in<fblack>"; 
      } 
     ?> 
    </div> 
<?php 
    include ("html_end.php"); 
?> 
+0

양식을 제출할 때 ($ _POST 배열에 요소가있는 경우, $ _POST 배열에서 특정 필드를 사용할 수있는 경우 등) – mishu

답변

1

가장 간단한 방법은 바로 HTML에 숨겨진 필드를 추가하는 것입니다,하고 있는지 확인하기 위해 테스트

내 코드입니다 해당 필드가 존재하며 예상 값을가집니다. 나는 당신이 분야에 대해 걱정할 필요가 없기 때문에 숨겨진 필드를 사용하여 다음 당신이 할 수있는 PHP에서
<input type="hidden" size="8" name="action" value="submitform" /> 

...

if (isset($_POST['action']) && $_POST['action']=='submitform') { 
    ... do form validation and submission ... 
} 

좋은 ... 같은 것을 사용하는 경향이 빈/비 설정 때문에 나타나지 않습니다. 예를 들어 양식에 라디오 버튼 만 있고 옵션이 설정되지 않은 경우 해당 양식 매개 변수는 브라우저에서 전달되지 않습니다. 이렇게하면 그런 문제에 대해 걱정할 필요가 없습니다.

두 개 이상의 양식이있는 페이지가있는 경우 action 매개 변수를 사용하여 페이지를 구분하고 적절하게 처리 할 수 ​​있습니다.

+0

이것은 트릭을 수행했습니다. 고맙습니다! –

0

당신이 당신의 PHP 코드를 래핑 할 수 있습니다 :

if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    //handle form 
} 
관련 문제