0

我正在尝试创建一个函数,该函数接受两个参数,一个用于用户输入,另一个用于错误消息。我最初有一个带有两个输入字段和相应错误的关联数组。当函数在没有任何条目的情况下提交时,我得到两个类似的输出;我以为我会得到'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为空字符串,或者不是,然后在第一次检查中......您再次进行相同的精确检查。由于ifs 是按顺序计算的,并且 input 永远不会是空字符串,因此第一个if将始终执行。

然后,你的第一个“其他”;它只会在$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 回答