代码之家  ›  专栏  ›  技术社区  ›  Derek

处理作为数组发送的Post数据

  •  0
  • Derek  · 技术社区  · 5 年前

    我有一个HTML表单,它发送一个隐藏字段和一个同名的单选按钮。

    这允许人们提交表单而不从列表中选择(但记录的答案为零)。

    当用户 选择一个单选按钮,表单将同时发布隐藏值和选定值。

    我想编写一个Perl函数来将post数据转换为散列。以下适用于标准文本框等。

    #!/usr/bin/perl
    use CGI qw(:standard);
    sub GetForm{
        %form;
        foreach my $p (param()) {
             $form{$p} = param($p); 
        }
        return %form;
    }   
    

    但是,当面对两个同名的表单输入时,它只返回第一个表单输入(即隐藏的表单输入)。

    我可以看到输入作为一个数组包含在post头中,但我不知道如何处理它们。

    我正在处理旧代码,因此很遗憾我无法更改表单!

    有办法吗?

    2 回复  |  直到 5 年前
        1
  •  3
  •   Quentin    5 年前
        2
  •  0
  •   ikegami    5 年前

    $form{$p} = param($p);                             # Value of first field named $p
    

    $form{$p} = ( multi_param($p) )[-1];               # Value of last field named $p
    

    $form{$p} = ( grep length, multi_param($p) )[-1];  # Value of last field named $p
                                                       # that has a non-blank value