想要以最有效的方式做一些意见。我有电子邮件输入和电话输入。我应用了JQuery验证,效果很好。基本上,他们都不会是空的。如果只提供一个,那很好。如果两者都提供,那也没关系。
每个字段都会调用自己的API。如果提供了电话字段,它将调用电话API,如果提供了电子邮件字段,它将调用并通过电子邮件发送API,如果提供了两个字段,它将调用这两个API。为了解决这个问题,我几乎做了
if (isset($_POST["email"]) && !empty($_POST["email"])){
//call email API
}
if (isset($_POST["phone"]) && !empty($_POST["phone"])){
//call phone API
}
这似乎涵盖了上述所有情况,尽管可能有更有效的方法来实现这一目标。
通过我的验证,我还想在任何时候按下提交按钮进行记录(它将无法通过验证,用户不会知道,我只是想记录它)。所以我有一个invalidHandler设置,我抓住输入的值(如果有的话)并将它们传递给PHP。
虽然在PHP中处理这个问题的最佳方法是什么?如果只填写一个字段,我不希望它被触发,因为上面会处理它。如果两个字段都是空的,我也不希望它被触发。如果一个或两个字段都有无效数据(验证失败),我真的只想要触发它。如果一个字段有有效数据而另一个字段没有,那么我不需要担心这个。
所以真的只是寻找在PHP中处理这样的事情的最好方法。
谢谢
答案 0 :(得分:2)
不确定你真正在问什么,但我认为你需要的是每张支票的标志,以及OR opreator:
$flag_phone = $flag_email = false;
if (phone_has_invalid_data()) {
$flag_phone = true;
}
if (email_has_invalid_data()) {
$flag_email = true;
}
if ($flag_email OR $flag_phone) {
//throw some error
} else {
//everything ok
}
(谈到不必要的优化,代码if (isset($var) && !empty($var))
相当于if (!empty($var))
)
答案 1 :(得分:0)
这是一个相当无意义的优化,但你可以这样做:
if (isset($_POST["email"]) && !empty($_POST["email"])){
//call email API
} elseif (isset($_POST["phone"]) && !empty($_POST["phone"])){
//call phone API
}
除此之外,它看起来很好