PHP Forms - 필수 Fields


이 장에서는 필수 입력 필드 만들기와 필요시 오류 메시지를 만드는 방법을 보여줍니다.


PHP - Required Fields

이전 페이지의 유효성 검사 규칙 표에서, "Name", "E-mail", 과 "Gender" 필드들이 필요함을 보았다. 이러한 필드들은 비위둘 수 없으며  HTML  폼에서 반드시 작성되어야 합니다. 

Field Validation Rules
Name Required. + Must only contain letters and whitespace
E-mail Required. + Must contain a valid email address (with @ and .)
Website Optional. If present, it must contain a valid URL
Comment Optional. Multi-line input field (textarea)
Gender Required. Must select one

이전 장에서 모든 input 필드는 선택적이었다. 

다음 코드에서는 새로운 변수들 $nameErr, $emailErr, $genderErr,과  $websiteErr 를 추가한다. 이 에러 변수들은 필수 필드들에 대한 에러 메시지를 갖게 된다. 우리는 또한 각  $_POST 변수에 대하여  if else 문을 추가한다. 이는 $_POST 변수가 비어있는지를 확인한다 (PHP empty() 함수로). 만약 비어 있다면, 에러 메시지가 해당 에러 변수에 저장되며, 비어 있지 않다면, 사용자 입력 데이터를 test_input() 함수로 보낸다.:

<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST")
{

  if (empty($_POST["name"]))
    {$nameErr = "Name is required";}
  else
    {$name = test_input($_POST["name"]);}

  if (empty($_POST["email"]))
    {$emailErr = "Email is required";}
  else
    {$email = test_input($_POST["email"]);}

  if (empty($_POST["website"]))
    {$website = "";}
  else
    {$website = test_input($_POST["website"]);}

  if (empty($_POST["comment"]))
    {$comment = "";}
  else
    {$comment = test_input($_POST["comment"]);}

  if (empty($_POST["gender"]))
    {$genderErr = "Gender is required";}
  else
    {$gender = test_input($_POST["gender"]);}
}
?>


PHP - Display The Error Messages

그러면 HTML form 에, 우리는 각 필수 필드 다음에 필요시 (즉, 사용자가 필수 필드를 작성하지 않고 제출하려하면) 적절한 에러 메시지를 생성하는 작은 스크립트를 추가 한다. :

Example

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
<label>Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">

</form>

Run example »

다음 단계는 입력 데이터의 유효성 검사이다. 즉, " Name 필드는 문자와 공백만 포함하는가?", 과  "E-mail 필드는 유효한 e-mail 주소 구문을 갖는가?", 그리고 작성이 완성되면, "Website 필드는 유효한 URL을 담고 있는가?".