【发布时间】:2014-05-31 20:01:54
【问题描述】:
我有一个对应于复选框的 PHP 变量 $admin。当表单被勾选并提交时,值被传递(设置为 1)并且一切都很好,但是如果它没有被勾选,变量会导致未定义的索引错误:
注意:未定义索引:C:...\admin.php 中的 admin
这是查询数据库的表单的 php 部分:
if($row == 1)
{
echo '<div id="errormsg">This username is already taken</div>';
}
else
{
$add = mysqli_query($dbcon, "INSERT INTO users (id, firstname, lastname, username, password, admin) VALUES
(null, '$fname', '$lname', '$user', '$pass', '$admin') ") or die ("Can't insert data");
echo '<div id="create-success">Successfully added user!</div>';
}
还有 HTML 表单:
<form action="admin.php" method="post" onSubmit="return validate(this)">
<fieldset>
<label class="reg">Username *</label> <input type="text" name="user" /><br />
<label class="reg">Password *</label> <input type="password" name="pass" /><br />
<label class="reg">Repeat Password *</label> <input type="password" name="rpass" /><br />
<label class="reg">First name:</label> <input type="text" name="fname" /><br />
<label class="reg">Last name:</label> <input type="text" name="lname" /><br />
<label class="reg">Admin?:</label> <input type="checkbox" value="1" name="admin" /><br/>
</fieldset>
<input type="submit" name="submit" value="Create User" />
</form>
有没有人知道为什么不选中该框会导致特定于 $admin 变量的错误?
【问题讨论】:
-
我猜当没有选中该框时,它发送 no 或 NULL 值。您应该先拦截 POST,自己手动设置变量。这样你就知道它有一个有效的值。
-
您应该显示处理
$_POST中处理值的脚本部分。很可能,这就是您的问题所在。如果用户名已被使用,您也可以考虑不告诉用户。从安全角度来看,这被认为是不好的做法。 -
POST 设置为 $admin = $_POST['admin'];等
标签: php html mysql forms checkbox