我的网站上有一个表单,但是我在传递复选框的值时出现问题。
我收到以下错误...
Notice: Undefined index: upgradeable in /var/www/vhosts/domain.com/httpdocs/***/includes/modules/admin.php on line 324 Unexpected error.
var_dump显示这些错误......
Notice: Undefined index: upgradeable in /var/www/vhosts/domain.com/httpdocs/***/includes/modules/admin.php on line 325 NULL Notice: Undefined variable: upgradeable in /var/www/vhosts/domain.com/httpdocs/***/includes/modules/admin.php on line 327 Unexpected error.
我的复选框看起来像这样......
<input type="checkbox" name="upgradeable" class="" value="<?php echo $membership['upgradeable']; ?>" >
在admin.php第324行,看起来像这样......
$upgradeable = inputFilter($_POST['upgradeable']);
任何人都可以帮我找到错误。
答案 0 :(得分:1)
仅当复选框实际设置为选中时,才会发送复选框的值。如果未选中,则根本不设置该值,因此$_POST['upgradable']
将不确定。
试试这个:
$upgradeable = isset($_POST['upgradeable']) ? inputFilter($_POST['upgradeable']) : '';
答案 1 :(得分:1)
使用类似isset()
的内容来检查$ _POST数组是否实际包含给定键的值,然后再尝试访问它。未选中的复选框实际上永远不会作为POST参数传递,因此如果未选中该框,则密钥将不存在。事实上,您可以简化代码:
$upgradeable = isset($_POST['upgradeable']);
(然后,您将在$upgradeable
中获得与已选中/未选中相对应的TRUE / FALSE值。)
答案 2 :(得分:0)
如果我没有弄错,当取消选中该复选框时,_POST数组中什么都没有。 (选中时“升级=开启”。)因此,如果您想避免警告,您可以这样做:
if (isset($_POST['upgradable']) && $_POST['upgradable'] === 'on') ...
答案 3 :(得分:0)
如果取消选中该复选框,则它不会在$ _POST
中在使用之前,您需要使用isset($ _ POST ['upgradeable']),如果未设置,可能会将其设置为false值。
答案 4 :(得分:0)
如果未选中复选框,则不会将任何内容传递回表单处理程序。
所以使用
if (isset($_POST['upgradeable'])){ // now sanitize }