簡體   English   中英

Perl:在CGI腳本中解析包含反斜杠的query_string

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM