一个函数里面的PHP条件语句

时间:2013-01-17 07:35:45

标签: php if-statement

我正在尝试创建一个函数,它为用户输入提供两个参数,另一个为错误消息。我最初有一个带有两个输入字段和相应错误的关联数组。 当没有任何条目提交函数时,我得到两个类似的输出;我以为我会得到'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>

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

你的代码在逻辑上没有意义。首先,检查$input是否为空字符串,或者不是,然后在第一次检查中...您再次进行相同的检查。由于if按顺序计算,输入不会是空字符串,因此第一个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');

}

如果输入值不是空字符串,则返回输入值。如果是,它将不会返回任何内容,而是会回显相应的错误。