2011-08-26 3 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

あなたがコメントする前に読んでください。そのスクリプトは、あなたの入力を脅かす限りは何もしませんし、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関数にこの情報を追加することです。私はフィールドごとにチェックを行う必要はありません。 .. thoはtypo thoのキャッチのために。 –

+0

正直なところ、実際には特定のバリデーションを実行する必要があります。残念ながら、いくつかのコーディングが必要です。しかし、あなたが迅速かつ汚れた解決策を探しているなら、私は自分の答えを更新したので、それぞれの必須フィールドの 'name'を '$ requiredFields'配列に追加するだけです。 。 –

+0

ありがとうございますが、必要なフィールドがすべて記入されている場合はどこにコードを入力しますか?私はBREAKステートメントの後にELSEを追加しようとしましたが、うまくいきませんでした。 –