Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
验证一个'中的多个字段;小型';PHP中的函数_Php_Forms_Validation_Function_Object - Fatal编程技术网

验证一个'中的多个字段;小型';PHP中的函数

验证一个'中的多个字段;小型';PHP中的函数,php,forms,validation,function,object,Php,Forms,Validation,Function,Object,我想在php中构建一个验证函数(甚至类)来检查表单中的空字段。 问题是,我想一个接一个地检查字段,如果有一个空字段要发送“The-field_name-is empty” 如果“无”为空,则继续执行脚本的其余部分 我已经使用了多个嵌套的if-else语句实现了这一点……但我想知道是否有一种更简洁、对程序员更友好的方法。 我尝试使用一个数组,我在foreach语句中传递该数组,然后使用一个switch循环 嵌套的if-else: function no_empties($first_name,$l

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

我已经使用了多个嵌套的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; } }
此外,如果代码的形式与每个表单有多少字段无关,那么它将是完美的。有人会像这样进入一个数组 $fields=数组(“first”=>$first,等等…)


有什么想法吗?

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

$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

}
$errors=array();
如果(!isset($_POST['field1'])是数值($_POST['field1'])是数值($_POST['field1'])是数值($POST['field1'])是数值($errors[]='field1'缺失或具有无效值';}
如果(!isset($_POST['field2'])| |!is_string($_POST['field2'])| | strlen($_POST['field2']))<20{$errors[]='field2缺失或不够长';}
如果(!isset($_POST['field3'])| |!在_数组($_POST['field3']),数组('valid','values')){$errors[]='field3缺失或具有不在(…..)列表中的无效值;}
如果(!isset($_POST['field4'])| | strotime($_POST['field4'])==false){$errors[]='field4缺失或具有无效的日期值';}
如果(计数($errors)==0){
//过程
}

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

$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

}
$errors=array();
如果(!isset($_POST['field1'])是数值($_POST['field1'])是数值($_POST['field1'])是数值($POST['field1'])是数值($errors[]='field1'缺失或具有无效值';}
如果(!isset($_POST['field2'])| |!is_string($_POST['field2'])| | strlen($_POST['field2']))<20{$errors[]='field2缺失或不够长';}
如果(!isset($_POST['field3'])| |!在_数组($_POST['field3']),数组('valid','values')){$errors[]='field3缺失或具有不在(…..)列表中的无效值;}
如果(!isset($_POST['field4'])| | strotime($_POST['field4'])==false){$errors[]='field4缺失或具有无效的日期值';}
如果(计数($errors)==0){
//过程
}

非常漂亮干净。它可以保存很多不同类型的验证,而且在6个月后阅读和修改都非常简单。然而,我认为它可以以某种方式向用户返回关于每个领域的错误的具体信息,而不仅仅是告诉他自己解决问题……始终关心那些愚蠢的人:]。很多人都很好,很干净。它可以保存很多不同类型的验证,而且在6个月后阅读和修改都非常简单。然而,我认为它可以以某种方式向用户返回关于每个领域的错误的具体信息,而不仅仅是告诉他自己解决问题……始终关心那些愚蠢的人:]。非常感谢