Param值在第一个空格处截断(其余的URL消失)

时间:2011-07-06 19:27:25

标签: html perl cgi

问题

我有一个html表单和一个perl cgi.pm脚本。

在文本字段中输入搜索。如果条目中有空格,则会切断任何其他参数(如选定的单选按钮)。恩。 'hello world',结果只有 '你好'。

因此,网址的值为:query=hello而不是query=hello+world&name=tag&name1=tag1...

perl脚本中的调用是:$search_key = param('query')不包含空格或后面的任何内容。 $ search_key ='你好'。

混乱

当我在localhost使用自己的Web服务器apache时,它工作正常。但是当试图将其联机时,问题就出现了。代码中唯一的区别是:(1)perl脚本中的url超链接 - search2011.cgimultwordsearch.cgi(不是问题),(2)中间加载页面 - loading.cgi, (3)HTML代码中“action =”调用中的url:

工作: <form name="search_option" action="http://localhost/cgi-bin/multiwordsearch.cgi" method="get" onSubmit="return checkform(this);">

VS

非工作:

<form name="search_option" action="/cgi-bin/loading.cgi" method="post" onSubmit="return checkform(this);">
        <h2><font color=forestgreen>Biomimetic Search</font></h2>
        <input type="text" name="query" size="40" />

尽管有“POST”,它仍然显示query=hello

我已经尝试了http ...之前/ cgi-bin /,它没有做任何事情。我试过了$search_key =~ s/ /+/但它没有做任何事情,所以我知道空间不会那么远。此外,超链接正常工作(即整个URL:查询后打印所有名称 - 值标签)。我试过增加文字的大小。

如果搜索是'hello + world',它就可以正常工作,所以问题是没有正确解释空间。

问题

问题是当来自表单时,无论是按下按钮,还是仅从文本字段(或cgi.pm中的某个地方),它都会截断。

这可能是我的问题吗?我意识到信息有限,但这就完全不同了!还有什么想法尝试?

如果您还有其他需要,请告诉我。

1 个答案:

答案 0 :(得分:0)

我认为问题是您打折的跨媒体页面。 工作的是multiwordsearch.cgi,而不工作的是loading.cgi。所以我假设loading.cgi是中间页面。

这肯定是导致问题的原因。我假设它获得了参数,然后重定向到multiwordsearch.cgi。这解释了为什么您loading.cgi的POSTed参数最终会出现在multiwordsearch.cgi的查询字符串中。所以在构建重定向网址时显然存在一个错误。

因此,我建议您查看loading.cgi中的网址构建代码。如果您需要帮助,请在此处发布。