如何在CGI脚本中替换看不见的名称 - 值对(来自单选按钮)?

时间:2011-06-20 22:25:02

标签: html perl cgi

从PerlMonks穿过,见底部。

更新:也许最好的方法是通过HTML或JavaScript(我不知道这些)?

目标

在运行整个代码并给出输出之后,我想提供一个超链接来重新运行代码,使用相同的搜索词,但按下不同的单选按钮。

以下是我的CGI脚本的一部分,与用户输入相关:

my $search_key  = param('query');
my $c_verb      = param('verb_only'); 
my $c_enabling  = param('enabling'); 
my $c_subject   = param('subject');
my $c_object    = param('object'); 
my $c_prep      = param('prep'); 
my $c_adj       = param('adjective');
my $c_modnoun   = param('modnoun');

my $category_id;


if ($c_verb eq 'on')
    {
    if ($c_enabling eq 'on')
        {$category_id = 'xcomp';}
    elsif ($c_subject eq 'on')
        {$category_id = 'subj';}
    elsif ($c_object eq 'on')
        {$category_id = 'obj';}
    elsif ($c_prep eq 'on')
        {$category_id = 'prep';}

我无法访问HTML,但是从查看源代码开始,所有$c_...都具有以下格式:     <input type="checkbox" name="verb_only" onClick="ch...

标题中的“看不见”是指没有附加的名称/标签值对,所以我不知道要改变什么,我在哪里可以找到这些信息?

我正在考虑将$c_enabling更改为$c_subject,并将另一个链接更改为从用户中选择$c_prep的情况。有没有办法替换那个单一参数的名称 - 值对? (因此用户输入选项,运行,而不是返回输入不同的选项,只需单击超链接,因为某些选项保持不变)

表单的网址如下:http://concept.whatever.com/test.html,输出位于网址:http://concept.whatever.com/cgi-bin/search2011.cgi

我的尝试

见发布的答案

更新:我已经尝试了`url(-query)但是没有附加到结尾......

感谢您的任何建议。如果不清楚,请告诉我。

原文:http://www.perlmonks.org/?node_id=910616 ....特别应用此建议:http://www.perlmonks.org/?node_id=910630

1 个答案:

答案 0 :(得分:0)

如果HTML的方法更改为GET而不是POST: <form name="search_option" action="http://localhost/cgi-bin/mytestsearch2011.cgi" method="get">

然后可以查看标签(我必须复制源代码并在我的localhost上执行此操作以检查它们)

我能够找出要放置的标签和值,b / c get方法。所以这是工作代码:

if ($category_id  eq "xcomp") {
    my $subjurl = "http://localhost/cgi-bin/mytestsearch2011.cgi?query=$search_key&verb_only=on&subject=on&exclude0=&exclude1=&exclude2=&exclude3=";
    print qq(<A HREF="$subjurl">Subject</A>\n)."    ";
    my $objurl = "http://localhost/cgi-bin/mytestsearch2011.cgi?query=$search_key&verb_only=on&object=on&exclude0=&exclude1=&exclude2=&exclude3=";
    print qq(<A HREF="$objurl">Object</A>\n)."  ";
    my $prepurl = "http://localhost/cgi-bin/mytestsearch2011.cgi?query=$search_key&verb_only=on&prep=on&exclude0=&exclude1=&exclude2=&exclude3=";
    print qq(<A HREF="$prepurl">Preposition</A>\n)."<br><br>";
}

elsif ($category_id  eq "subj") { ##List urls other than what is currently output:
    my $enablingurl = "http://localhost/cgi-bin/mytestsearch2011.cgi?query=$search_key&verb_only=on&enabling=on&exclude0=&exclude1=&exclude2=&exclude3=";
    print qq(<A HREF="$enablingurl">Enabling Function</A>\n)."  ";
...

我不明白所有排除标签,但没关系...

更新:这也适用于POST,我只需要知道URL后面的所有标签。谢谢!