【发布时间】:2017-09-11 16:34:37
【问题描述】:
在清理从控制器传递到模型的 $_POST 时,我需要清理输入,我可以想到 2 个选项。
对于第一个,我可以像这样嵌套if 块:
if(!empty($username))
{
if(!empty($password))
{
//login the user
}
else
{
echo 'Please enter password.'
}
}
else
{
echo 'Please enter username.'
}
另外一个是这样的:
if(empty($username))
{
$err[] = 'Please enter username';
}
if(empty($password))
{
$err[] = 'Please enter password.';
}
if(empty($err)){
//login the user
}
else
{
//display error
}
哪种方式是首选方式,是否还有另一种更智能的输入净化方式?
【问题讨论】:
-
完全自以为是,我现在将证明:[在此处插入人员[s name]的首选方法是
if (!empty($username) && !empty($password)),而不是嵌套。 -
仅凭个人经验,我的项目是这样设置的:
if( empty($username)) throw new LoginException('Please enter username.'); if(empty($password)) throw new LoginException('Please enter password.'); ...- 有些人可能会指责我滥用异常,但它工作得很好。 -
@NiettheDarkAbsol 我指责你有不同的意见,从而更加证明了我的观点!
-
@Script47 好的,我明白你的想法,但我希望能够具体说明哪些输入未通过验证,而不是说“有问题”,另一件事是在注册新用户时,每个数据正在经历不同的清理 - 对于用户名 - 首先如果它不为空,然后如果它包含受限字符,用户名的长度,如果用户名被使用等等。所以我不能将它们组合在一起如果声明。
标签: php