PHP CI 框架获取同名数组 input 表单值的方法

木白
木白
发布时间:2026-10-13 | 6人浏览过
原创

当开发需要动态添加或删除列表项(如商品、书籍)时,HTML 表单中常会出现多个同名的 input 元素。本文总结如何在 PHP CodeIgniter 框架中安全、准确地获取这类数组形式的表单数据,并附带前端的取值方案。

前端页面设置

为了实现数据的批量提交,前台页面的表单中必须将多个 input 元素的 name 属性设置为数组格式。例如向书架中添加书本,可以动态增加或删减输入框:

<form action="process.php" method="post">
    <!-- 注意 name 属性为 books[] -->
    <input type="text" name="books[]" />
    <input type="text" name="books[]" />
    <input type="text" name="books[]" />
    <input type="submit" value="保存" />
</form>

此时,每个具有相同 books[] 名称的输入框都会被视为一个数组元素。浏览器在向服务器提交时,会自动将这些值组合成一个名为 books 的数组。

PHP CI 框架获取方法

在 CodeIgniter (CI) 框架中,推荐使用内置的安全输入库来获取这些数据。直接使用全局变量不仅不安全,而且框架封装了过滤和清理逻辑。

第1步:控制器中接收数组数据

  • 目的: 获取前端 POST 过来的所有书名列表。
  • 操作: 在对应的 Controller 方法中使用 $this->input->post()。
// 获取名为 'books' 的所有输入值,返回值为数组
$books = $this->input->post('books');

// 此时 $books 是一个标准的 PHP 数组:
// ['书A', '书B', '书C']

关键说明:

  • 参数只需写 'books',不需要加 []。因为 HTML 中的 books[] 告诉服务端这是一个数组,而 CI 的 post 方法会根据键名自动解析。
  • 如果不确定是否有数据,建议配合 isset 或使用 CI 的 get_post() 方法进行非空判断,避免 undefined index 错误。

第2步:数据处理与遍历

拿到数组后,可以根据业务需求进行遍历插入数据库或其他操作:

if (!empty($books)) {
    foreach ($books as $book) {
        // 对每个 $book 进行处理,例如入库
        // echo "添加书籍: " . htmlspecialchars($book);
    }
}

JavaScript 前端取值参考

如果在未提交的情况下,需要通过 JavaScript 在前端获取这些同名输入框的值(例如用于实时校验或动态展示),可以使用 getElementsByName:

var els = document.getElementsByName("books");
for (var i = 0; i < els.length; i++) {
    alert(els[i].value);
}

此方法能返回一个类数组对象,允许你遍历并读取每一个 input 的当前值。

注意事项

  • 安全性: 永远不要直接使用 $_POST['books'],尤其是在开放环境中。始终通过 $this->input->post() 处理,以便启用 XSS 过滤。
  • 动态性: 如果使用 AJAX 或 JS 动态增减 input,确保新增的元素也具有相同的 name="books[]" 结构,否则后端只能收到已存在的那几个值。

以上就是 PHP CI 框架获取多个同名 input 元素值的详细内容,更多关于 PHP CI 表单处理的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表