我的第一页有两个框用于用户生日的月份和日期,在此页面上我想通过并确保两个框都已填写,如果没有,则回显一条消息。我现在遇到的问题是,即使两个框都有值,每次都会弹出消息。
<?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.";
}
?>
答案 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
}
}