检查CGI GET参数是否存在

时间:2018-02-21 16:10:39

标签: perl get cgi uri

我试图确定Perl CGI程序中是否存在GET查询参数

这是sf存在时的查询:

http://server.com/support?page=hello&sf=1

其次,sf不存在时,我的查询是

http://server.com/support?page=hello

这里有一些我想要完成的伪代码:

if (sfVariable does not exist) {
     // process code
}

我试过这个没有运气(只是打印变量以确保我们正确地检索它):

use CGI;

my $q = CGI->new;
my $sfVar = $q->param('sf');
print $sfVar;

编辑:

我在这里:

use CGI;
my $q = CGI->new;
my $page = $q->param('sf');
if(not defined $page){
  print "no sf variable\n";
}

我得到一个错误。这是日志:

[Wed Feb 21 16:39:56.041581 2018] [cgi:error] [pid 6198] [client 111.111.111.111:57878] malformed header from script 'test': Bad header: no sf variable
[Wed Feb 21 16:42:02.146266 2018] [cgi:error] [pid 11150] [client 111.111.111.111:58047] malformed header from script 'test': Bad header: no sf variable
[Wed Feb 21 16:42:11.578022 2018] [cgi:error] [pid 29861] [client 111.111.111.111:58062] End of script output before headers: test

1 个答案:

答案 0 :(得分:3)

如果给定的值不存在,param方法将返回undef

你需要这个

my $sf_var = $q->param('sf');

if ( not defined $sf_var ) {
    print "There is no sf parameter\n";
}