【发布时间】: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