2015-06-06 215 views
1
  • 列表项

只是想在最有效的方式有些意见要做到这一点。我有一个电子邮件输入和一个电话输入。我应用了JQuery验证,效果很好。基本上,他们都不能空着。如果只提供一个,那很好。如果两者都提供,那也很好。如何处理多个if语句PHP

每个字段都会调用它自己的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中处理这种事情的最佳方式。

感谢

+1

看起来对我来说很好。 – Kilenaitor

+0

我也很好看。问题是什么。这是正确的,很好。 –

+0

如果验证失败,我不希望它调用API。我需要在PHP中进行检查以查看验证是否失败 –

回答

2

不知道你真的问,但我认为你需要的是每个支票的标志,或者是一个OR运算器:

$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))

+0

这看起来不错,虽然你可以用一个'$ flag'逃脱?尽管这取决于用户想要显示错误的方式。 –

+0

@SpencerWieczorek是的,你可以缩短它,但为了清晰起见,我保留它“冗长” – periklis

0

这是一个相当没有意义的优化,但你可以这样做:

if (isset($_POST["email"]) && !empty($_POST["email"])){ 
    //call email API 
} elseif (isset($_POST["phone"]) && !empty($_POST["phone"])){ 
    //call phone API 
} 

其他,它看起来很好