PHP判断POST提交的空变量时if else逻辑不生效问题排查
错误原因
- 逻辑运算符使用错误:你当前
if判断使用的是&&(逻辑与),只有当$email、$one、$two、$three、$four五个变量同时为空时,才会进入if分支返回错误提示。只要有一个变量非空,就会执行else分支,和你想要的「只要有一个提交数据为空就触发报错」的需求完全相反。 - 部分参数未做空白过滤:
$email和$one没有经过trim()处理,如果用户提交的是纯空格内容,empty()会判定该变量非空,导致判断结果不符合预期。
修正代码
// 所有参数统一做trim处理 $email = trim($this->input->post('otpEmail')); $one = trim($this->input->post('one')); $two = trim($this->input->post('two')); $three = trim($this->input->post('three')); $four = trim($this->input->post('four')); // 逻辑与改成逻辑或,只要有一个为空就进入报错分支 if(empty($email) || empty($one) || empty($two) || empty($three) || empty($four)) { $responseJSON = array("Status" => false, "Message" => "Please enter your otpEmail,one,two,three,four"); header("content-type:application/json"); echo json_encode($responseJSON); } else { $responseJSON = array("Status" => true, "Message" => "All data exist here"); header("content-type:application/json"); echo json_encode($responseJSON); }
补充说明
如果你的业务场景允许提交'0'作为合法参数,需要注意PHP的empty()函数会将字符串'0'判定为空,此时可以把判断条件替换为trim($xxx) === ''来避免误判。
内容的提问来源于stack exchange,提问作者Amandeep
相关产品推荐
相关产品推荐

