检查 CGI.pm 中是否存在空参数



要检查请求参数是否具有值(http://example.com?my_param=value(,您可以使用

query->param('my_param')

如果使用no_value形式,这似乎是片状的:http://example.com?my_param 。

有没有办法简单地检查 CGI.pm 中参数的存在?

您可以检查参数是否存在已定义。 以下代码

#!/usr/bin/env perl
use strict;
use warnings;
use CGI;
my $cgi = CGI->new();
print $cgi->header;
my $defined = defined $cgi->param('tt');
my $val = $cgi->param('tt');
print <<END;
<!doctype html>
<html> HTML Goes Here 
<h1>tt: "$defined" "$val"</h1>
</html>
END

将生成输出:

<!doctype html>
<html> HTML Goes Here 
<h1>tt: "1" ""</h1>
</html>

当 URI http:///cgi-bin/t.pl?someother=something&tt 时

不幸的是,当它是唯一的参数时,这不起作用。

所以可以肯定的是,你必须测试:

my $defined = defined $cgi->param('tt') || $ENV{QUERY_STRING} eq 'tt';

这似乎取决于浏览器的实现。根据 2001 年的这个 Perlmonks 线程,可能不会返回空参数。但如果是,密钥将在那里,但包含一个空字符串q{}.如果参数不存在,它将undef,因此您可以与defined进行检查。

最新更新