如何在 PERL-CGI 中读取多个复选框

How to read multiple check boxes in PERL-CGI

我有一个包含多个复选框(所有适用项)的表单,我正在尝试读取所有选定的值....用户单击提交它会重新加载页面并检查 "post" 和如果是一个新条目....但它只读取第一个选择的值,我不知道我做错了什么;/

<label class="checkbox-inline"><input type="checkbox" name="sections" value="Cars">Cars</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Trucks">Trucks</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Airplanes">Airplanes</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Cell Phones">Cell Phones</label> 

sub post
{ 
  if($id1 == 'active')
  my @sections = $POST->{sections}->[0];

}

您的代码中存在一些明显的问题。

  1. 当您尝试进行字符串比较时,您正在使用 ==。请改用 eq
  2. 您的 if 语法错误。在 Perl 中,您需要使用大括号 - if (...) { ... }.
  3. 您明确要求复选框数组中的第一个元素。您需要 @{ $POST->{sections} } 才能获得所有值。

所以,总而言之,您的子例程可能应该如下所示:

sub post
{ 
  if ($id1 eq 'active') {
    my @sections = @{ $POST->{sections} };
    # Do something else with @sections
  }
}

此外,我想请您在 2019 年认真重新考虑使用 CGI。请阅读 CGI::Alternatives 并考虑使用更现代的技术。