【问题标题】:Validating multiple fields in one 'small' function in PHP在 PHP 中的一个“小”函数中验证多个字段
【发布时间】:2012-02-18 03:16:51
【问题描述】:

我想在 php 中构建一个验证函数(甚至是类)来检查表单中的空字段。 问题是我想一个接一个地检查字段,如果有一个空字段发送“-field_name- 是空的”。 如果 none 为空,则继续脚本的其余部分...

我已经使用多个嵌套的 if-else 语句实现了它......但我想知道是否有更紧凑和程序员友好的方式。 我尝试使用我在 foreach 语句中传递的数组,然后使用 switch 循环。

嵌套的 if-else:

function no_empties($first_name,$last_name,$username,$password,$password2,$user_email,$user_email2)
{
if ( !empty($first_name) )
{ if ( !empty($last_name ) )
    {if ( !empty($username  ) )
{if ( !empty($password  ) )
   {if ( !empty($password2) )
    {if ( !empty($user_email) )
        {if (!empty($user_email2) )
            {return TRUE;}
        else{ js_msg("Please retype your email!");return FALSE;};
                } 
    else {js_msg("Please enter a -valid- email!"); return FALSE;};
            }
else{js_msg("Please retype your password!");return FALSE;};
        } 
else {js_msg("Please enter a password!"  ); return FALSE;}; 
    } 
else {js_msg("Pleas enter a username!"); return FALSE;};
} 
else { js_msg("Please enter your last name!"); return FALSE;};  
} 
else { js_msg("Please enter your first name!"); return FALSE;};
}

我描述的第二种情况是这样的:

$fields_array = array("first name"=>$first_name,"last name"=>$last_name,"username"=>$username,"password"=>$password,"retype password"=>$password2,"email"=>$user_email,"retype email"=>$user_email2); function TEST($fields_array) { foreach ($fields_array as $field_name => $input) { switch (empty($input)) : case TRUE: return $output="The -{$field_name}- field is empty
"; break; case FALSE:return $output= "No field is empty!!! Hooray!
"; break; endswitch; } }

它正在工作,但我不能这样使用它:

if ( TEST($fields_array)==TRUE ): echo $output; else: echo $output; endif;

此外,如果代码的格式与每个表单有多少字段无关,那将是完美的。有人会输入一个数组 $fields = array ("first"=>$first,etc....) .

有什么想法吗??????

【问题讨论】:

    标签: php forms validation function object


    【解决方案1】:

    我通常这样做,发现它更干净,并且允许您一次链接更多错误而不是单个错误:

    $errors = array();
    if(!isset($_POST['field1']) || !is_numeric($_POST['field1']) || $_POST['field1'] < 123){ $errors[] = 'Field1 is missing or has an invalid value'; }
    if(!isset($_POST['field2']) || !is_string($_POST['field2']) || strlen($_POST['field2']) < 20){ $errors[] = 'Field2 is missing or is not long enough'; }
    if(!isset($_POST['field3']) || !in_array($_POST['field3'], array('valid', 'values'))){ $errors[] = 'Field3 is missing or has an invalid value value not in list of (....)'; }
    if(!isset($_POST['field4']) || strtotime($_POST['field4']) == false){ $errors[] = 'Field4 is missing or has an invalid date value'; }
    
    if(count($errors) == 0){
    
        //Process
    
    }
    

    【讨论】:

    • 真的很干净。它可以容纳许多不同类型的验证,并且在 6 个月后阅读和更改非常简单。然而,我认为它可以以某种方式向用户返回有关每个领域的问题的具体信息,而不是仅仅告诉他自己弄清楚......总是关心那些愚蠢的人:]。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2012-11-04
    • 2018-06-05
    • 2010-12-22
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    相关资源
    最近更新 更多