简体   繁体   English

带有Perl CGI的复选框

[英]Checkboxes with Perl CGI

Sorry if my question is too simple, I am just starting out with CGI... So I have a bunch of checkboxes with the same name. 抱歉,如果我的问题太简单了,我只是从CGI开始。所以我有一堆同名的复选框。 Sample HTML: HTML示例:

<form action="/cgi-bin/checkbox.cgi" method="POST">
<input name="Loc_opt" value="Loc_1" type="checkbox">Option 1<br>
<input name="Loc_opt" value="Loc_2" type="checkbox">Option 2<br>
<input name="Loc_opt" value="Loc_3" type="checkbox">Option 3<br>
<input type="submit" value="Submit">
</form>

I need to find out which of them are checked using Perl CGI. 我需要找出使用Perl CGI检查了哪些。 I have the following in checkbox.cgi: 我在checkbox.cgi中具有以下内容:

print "Content-type:text/html\r\n\r\n";
local ($buffer, @pairs, $pair, $name, $value, %FORM);
    # Read in text
    $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
    if ($ENV{'REQUEST_METHOD'} eq "POST")
    {
    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    }else {
    $buffer = $ENV{'QUERY_STRING'};
    }
    # Split information into name/value pairs
    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs)
    {
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%(..)/pack("C", hex($1))/eg;
    $FORM{$name} = $value;
    }

What should I do to now print, say, the values of the selected checkboxes? 现在,我应该怎么做才能打印所选复选框的值?

You need to set the param() result into an array if you have multiple form elements with the same name.From CGI101 : 如果您有多个具有相同名称的表单元素,则需要将param()结果设置为数组。来自CGI101

my @colors = param('color');
foreach my $color (@colors) {
    print "You picked $color.<br>\n";
}
use strict; use warnings;
use CGI;

my $cgi = CGI->new;
my @opt = $cgi->param('Loc_opt');

Please read the Perl documentation for the CGI module . 请阅读CGI模块的Perl文档。 There are easy, built-in ways to handle all this. 有简单的内置方法来处理所有这些。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM