2011-08-26 7 views
2

다음 코드 예제에서, 누락 된/필수 양식 필드를 처리 할 수 ​​있도록 check_input 함수에 무엇을 추가해야합니까? 기본적으로 내가하려는 것은 최종 사용자에게 양식의 맨 위에 오류 메시지를 표시하는 것입니다. 오류 메시지는 필수 입력란을 모두 채우지 않고 양식을 제출하려고하면 "*로 표시된 입력란은 필수"와 같은 형식으로되어 있습니다. .PHP로 양식 필드 필요

모든 도움을 주시면 대단히 감사하겠습니다. 미리 감사드립니다.

// Don't post the form until the submit button is pressed. 
if(isset($_POST['submit'])) { 

    echo( 
    check_input($_POST['name']) . <br> . 
    check_input($_POST['city']); 

} 

// check_input function 
function check_input($data) 
{ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data, ENT_QUOTES); 
    return $data; 
} 

<form action="test.php" method="post"> 
    <input type="text" name="name"> 
    <input type="text" name="city"> 
    <input type="submit" name="submit" value="submit"> 
</form> 
+0

[FormValidator()] (http://www.html-form-guide.com/php-form/php-form-validation.html) – tttony

+0

댓글을 달기 전에 먼저 읽으십시오. 이 스크립트는 여러분의 입력에 대한 SANITIZING에 관한 것이 아니며, php에 filter_var VALIDATE_STRING 함수가없는 문자열과 같은 임의의 값을 검증 할 수있는 방법이 없습니다. 왜냐하면 스크립트를 실제로 사용할 수 없게 만들지 않기 때문에 가능하지 않기 때문입니다. –

답변

4
<?php 
// Don't post the form until the submit button is pressed. 
$requiredFields = array('name', 'city'); // Add the 'name' for all required fields to this array 
$errors = false; 
if(isset($_POST['submit'])) 
{ 
    // Clean all inputs 
    array_walk($_POST, 'check_input'); 

    // Loop over requiredFields and output error if any are empty 
    foreach($requiredFields as $r) { 
     if(strlen($_POST[$r]) == 0) { 
      $errors = true; 
      break; 
     } 
    } 

    // Error/success check 
    if($errors == true) { 
     echo 'Fields marked with a * are required'; 
    }else{ 
     // no errors 
     // ... 
    } 
} 

// check_input function 
function check_input(&$data) 
{ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data, ENT_QUOTES); 
    return $data; 
} 
?> 

PS : 나는 양식 HTML에서 견적 불일치를 발견했습니다. 메서드는 method="post"이 아니고 method="post'이 아니어야합니다.

+0

일부 필드가 필요할 수도 있고 필요하지 않을 수도 있으며,이 정보를 check_input 함수에 추가하여 각 필드에 대한 검사를 할 필요가 없습니다. (완료 될 때까지 30 개 또는 그 이상이 될 수 있습니다) .. 오타에 캐치를위한 thx. –

+0

솔직히 특정 검증을 수행해야합니다. 불행히도 코딩이 필요합니다. 그러나 빠르고 더러운 솔루션을 찾고 있다면 대답을 업데이트했습니다. 필요한 필드를 '$ requiredFields'배열에 '이름'을 추가하면됩니다. 모든 설정이 필요합니다. . –

+0

감사합니다.하지만 모든 필수 입력란을 작성한 경우 코드를 어디에 넣어야합니까? BREAK 문 다음에 ELSE를 추가하려고 시도했지만 작동하지 않았습니다. –