0

ユーザー入力用とエラーメッセージ用の2​​つの引数を取る関数を作成しようとしています。最初に、2 つの入力フィールドと対応するエラーを含む連想配列があります。関数がエントリなしで送信されると、2 つの同様の出力が得られます。「test1」と「test2」を取得すると思いました。毎回異なる引数を渡していますが、同じ結果が得られます。コードは以下です

$valid = TRUE;
    //$errors='';
    $errors=array('desc_error'=>'please enter valid description',
                  'title_error'=>'provide valid title','no_error'=>'',);
    function sanitizeText($input,$error){
        //$input;
        if($input!='')
        {
            $input= filter_var($input, FILTER_SANITIZE_STRING); 
            if($input==''){
                global $errors;
                $errors[$error];
                $valid=FALSE;
                return $errors[$error];
            }
            else{
                $input;
                echo 'test 1';
                return $input;
            }


        } 
        else if($input=='')
        {

            if($input==$_POST['desc'])
            {
                echo 'the description field is required<br/>';
                $valid=FALSE;
            }
            else{
                //
            }

        }

    }
    if(isset($_POST['submit']))
    {
        $title=sanitizeText($_POST['title'],'title_error');
        $desc=sanitizeText($_POST['desc'],'desc_error');


    }

?>


<form method="post" action="">
    <p>Book Title:<input type="text" name="title" maxlength="100" value=""/></p>
     <p>Desc:<input type="text" name="desc" maxlength="100" value=""/></p>

    <p><input type="submit" name="submit" value="Submit"/></p>
</form>
4

2 に答える 2

0

あなたのコードは論理的に意味がありません。最初に、が$input空の文字列であるかどうかを確認し、その最初のチェック内で..同じ正確なチェックを再度行います。s は順番に評価され、入力が空の文字列になることはないためif、最初のものifが常に実行されます。

次に、最初の「else」。変数が空の文字列の場合にのみ実行され$inputます..何をしようとしているのかはある程度わかりますが、今のままでは機能しません。それが機能するためには、以下のようにする必要があります。

function sanitizeText($input,$error) {
    global $errors;
    global $valid;

    $input_val = filter_var($_POST[$input], FILTER_SANITIZE_STRING);

    if ($input_val != '') {
        $valid = TRUE;
        return $input;
    }
    else if ($input_val == '') {
        $valid = FALSE;
        echo $errors[$error].'<br />';
    }
}
if(isset($_POST['submit']))
{
    $title=sanitizeText('title','title_error');
    $desc=sanitizeText('desc','desc_error');

}

入力値が空の文字列でない場合は、入力値が返されます。そうである場合、何も返さず、代わりに適切なエラーをエコーし​​ます。

于 2013-01-17T08:28:50.523 に答える
0

php を使用してフォームを検証しようとしていると思いますが、javascript を使用して検証することもできますが、php を使用してそれを行うには、次のリンクを参照してください。

http://myphpform.com/required-optional-fields.php

http://coredogs.com/lesson/form-and-php-validation-one-page

http://www.phpf1.com/tutorial/php-form.html?page=3

http://www.montanaprogrammer.com/php-web-programming/php-form-validation/

于 2013-01-17T07:50:24.907 に答える