[英]Perl: parsing query_string containing backslash in cgi script
我是这里的新手,希望我能正确解释我的问题...我有一个采用文件名和位置的html表单,并且cgi脚本处理了此输入。 文件将类似于:file.ext和位置将类似于/ some / folder /我的问题是,当我尝试解析查询字符串时,字符串中的&和/转换为amp;。 和%2F,当我尝试打印参数时,它不起作用...这是输出:
testjarName=some.jar&loc=some%2Ffolder&host=r9_7079&action=PatchjarName
some.jar some.jar
amp;loc
some some
amp;host
r9_7079 r9_7079
amp;action
Patch Patch
FILE IS some.jar and LOCAITON IS
file is some.jar
location some
machine is r9_7079
action is Patch
You typed:
有人可以帮忙吗? 我也尝试过param()调用,但是没有帮助。 表单输入法是GET这是我正在使用的脚本:
#!/usr/local/bin/perl
use CGI qw(:standard);
#print header;
#print start_html('A Simple Example'),
$my_input = $ENV{QUERY_STRING};
print "Content-type: text/html\n\n";
print "";
print "<html><head></title>test</title></head><body>";
print "$ENV{QUERY_STRING}";
@fv_pairs = split /\&/ , $my_input;
foreach $pair (@fv_pairs) {
if($pair=~m/([^=]+)=(.*)/) {
$field = $1;
print "$field";
print "<br>";
$value = $2;
print "$value " ;
$value =~ s/\+/ /g;
print "$value " ;
print "<br>";
$value =~ s/%([\dA-Fa-f]{2})/pack("C", hex($1))/eg;
$INPUT{$field}=$value;
}
}
print "<br><hr>"; print "FILE IS $INPUT{jarName} and LOCAITON IS $INPUT{loc}";
if (param()) {
print "<hr>";
print
"file is ",em(param('jarName')),
p,
"location ",em(join(", ",param('loc'))),
p,
"machine is ",em(param('host')),
p,
"action is ",em(param('action')),
hr;
print "You typed: " . $input{'loc'} . "\n";
}
print "</body></html>";
#print end_html;
请帮忙。 提前致谢。
使用HTML :: Entities编码/解码输入字符串。 ( 如何解码HTML实体? )
param
将分解查询字符串并为您解码HTML字符:
perl -e 'use CGI qw(:standard);
print param("loc");
' 'testjarName=some.jar&loc=some%2Ffolder&host=r9_7079&action=PatchjarName'
输出:
some/folder
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.