更多说明: 我的注册表格中有一个名称=“同意”的复选框,用户必须标记此值=“同意”才能完成注册过程,如果此复选框未标记错误消息将显示给用户。作为测试,我尝试提交表单而不标记此复选框但我发现此INDEX错误出现说:[注意:未定义索引:同意]甚至用户的错误消息也出现了。
我的表单中有一个复选框和无线电字段,这些字段是可选的。因此,当我提交表单并且这些值为空时,我会收到INDEX错误。有没有办法避免错误而不使用error_reporting(0)功能:
<form action="" method="post">
<div class="checkbox">
<label>
<input type="checkbox" name="agree" value="agree">
</label>
</div>
</form>
<?php
if (isset($_POST['submit'])) {
$agree = $_POST['agree'];
}
?>
答案 0 :(得分:0)
您应该使用isset
或empty
函数的条件。假设您使用agree
作为位值,您可以使用三元运算符来设置如下值:
<form action="" method="post">
<div class="checkbox">
<label>
<input type="checkbox" name="agree" value="agree">
</label>
</div>
</form>
<?php
if (isset($_POST['submit'])) {
$agree = !empty($_POST['agree']) ? 1: 0;
}
?>
根据empty manual,
如果变量不存在,则不会生成警告。这意味着empty()基本上是!isset($ var)||的简洁等价物$ var == false。