问题
我有一个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.cgi
与multwordsearch.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中的某个地方),它都会截断。
这可能是我的问题吗?我意识到信息有限,但这就完全不同了!还有什么想法尝试?
如果您还有其他需要,请告诉我。
答案 0 :(得分:0)
我认为问题是您打折的跨媒体页面。
工作的是multiwordsearch.cgi
,而不工作的是loading.cgi
。所以我假设loading.cgi
是中间页面。
这肯定是导致问题的原因。我假设它获得了参数,然后重定向到multiwordsearch.cgi
。这解释了为什么您loading.cgi
的POSTed参数最终会出现在multiwordsearch.cgi
的查询字符串中。所以在构建重定向网址时显然存在一个错误。
因此,我建议您查看loading.cgi
中的网址构建代码。如果您需要帮助,请在此处发布。