使用reusableforms.com的PHP表单脚本如何获取多复选框输入值
多复选框值获取报错解决方法
问题根源
当前报错来自两方面配置错误:
- HTML端多复选框的
name属性没有加数组标识[],浏览器只会提交最后一个选中的复选框值,不会把所有选中值组装成数组传递到后端 - 若用户未勾选任何复选框,该字段不会出现在
$_POST中,直接读取会触发索引不存在报错
第一步:修改HTML代码
将所有复选框的name属性从important修改为important[],修改后代码如下:
<div class="form-box"> <label>Choose which of the following are most important to you:</label> <div class="multi-select"> <div class="custom-select"> <input type="checkbox" id="hight-rating" value="High Rating" name="important[]" hidden> <label for="hight-rating">High Rating</label> </div> <div class="custom-select"> <input type="checkbox" id="mobile-phone-app" value="Mobile phone app" name="important[]" hidden> <label for="mobile-phone-app">Mobile phone app</label> </div> <div class="custom-select"> <input type="checkbox" id="vendor-management" value="Vendor management" name="important[]" hidden> <label for="vendor-management">Vendor management</label> </div> </div> </div>
第二步:修改handler.php代码
在调用process方法前添加默认值处理,避免字段不存在报错,同时可以将数组转换为逗号分隔的字符串方便邮件展示,修改后代码如下:
<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); require_once './vendor/autoload.php'; use FormGuide\Handlx\FormHandler; $pp = new FormHandler(); $validator = $pp->getValidator(); $validator->fields(['name','email', 'phone', 'address', 'property', 'following', 'units', 'date'])->areRequired()->maxLength(50); $validator->field('important')->maxLength(5000); $validator->field('email')->isEmail(); // 处理复选框值 $_POST['important'] = isset($_POST['important']) ? implode('、', $_POST['important']) : '未选择任何选项'; $pp->sendEmailTo('xxx@gmail.com'); // ← 替换为你的邮箱 echo $pp->process($_POST); ?>
内容的提问来源于stack exchange,提问作者Touhidul Sadeek
相关产品推荐
相关产品推荐

