如何检查每个盒子是否有输入的值?

时间:2017-04-20 19:56:42

标签: php

我的第一页有两个框用于用户生日的月份和日期,在此页面上我想通过并确保两个框都已填写,如果没有,则回显一条消息。我现在遇到的问题是,即使两个框都有值,每次都会弹出消息。

<?php
$valuesRecieved = true;

for($v = 0; $v < sizeof($_POST); $v++)
{
   if(!(isset($_POST[$v]))
   {
      $valuesRecieved = false;
      break;
   }
}
if(!$valuesRecieved)
{
  echo "You must enter a value for each box. Please click your browsers back button, and try again.";
}

?>

1 个答案:

答案 0 :(得分:2)

看起来您的主要问题是您对$allEntered而不是$valuesReceived进行了最终检查 - 所以如果您将$allEntered更改为$valuesReceived - 那么您应该做得很好。

但你也应该考虑以下几点:

除非您的表单复选框以数字命名,并且这两个输入是您唯一的输入,否则您的循环将无法正常工作。您应该使用foreach循环。

foreach($_POST as $key => $value) {
    if(empty($value)){
        $valuesReceived = FALSE
    }
}

此外,如果有人要修改您的客户端代码,他们可以通过删除表单中的内容来绕过此逻辑。因此,如果您想确保所有内容都已填写,那么您需要明确说出您要查找的内容,如下所示:

    foreach(array("bday_month","bday_day") as $value){
   // the values in this ^array should correlate 
   // with the names of your form inputs
        if(empty($_POST[$value])){ 
            $valuesRecieved = False
        }
    }