Как я могу проанализировать и отобразить параметры строки запроса CGI? - PullRequest
0 голосов
/ 10 февраля 2010

Я хотел бы выполнить команду на сервере, используя параметры системного запроса в URL. Я работаю на сервере.

В браузере - >> //localhost:9009/?comd, который отображает список файлов в каталоге, как я поместил в коде

if (/comd/i )        { print  $client `dir`;      }

Как я могу разобрать параметры запроса? Например:

<a href="http://localhost:9009/?comd" rel="nofollow noreferrer">http://localhost:9009/?comd</a><B>&user=kkc&mail=kkc@kkc.com</B>

Я хотел бы вернуться - >> hello <B>user</B> please confirm your email <B>kkc@kkc.com</B>

Как я могу разобрать параметры запроса в URL?

Ответы [ 3 ]

4 голосов
/ 10 февраля 2010

use CGI;

my $cgi = CGI->new();

my $user = $cgi->param( "user" );
my $mail = $cgi->param( "mail" );

print( "Hello $user please confirm your email $mail\n" );
3 голосов
/ 25 июня 2010
#!/usr/bin/perl
$|++;                              # auto flush output

use CGI;                           # module that simplifies grabbing parameters from query string
use HTML::Entities;                # for character encoding
use strict;                        # to make sure your Perl code is well formed

print qq{Content-type: text/html\n\n};  # http header b/c outputting to browser

   main();                         # calling the function

   sub main{
      my $cgi    = new CGI;        # store all the cgi variables
      # the following stores all the query string variables into a hash
      #   this is unique because you might have multiple query string values for
      #   for a variable. 
      #   (eg http://localhost/?email=a@b.com&email=b@c.com&email=c@d.com )
      my %params = map { $_ => HTML::Entities::encode(join("; ", split("\0", $cgi->Vars->{$_}))) } $cgi->param;

      #Input: http://localhost:9009/?comd&user=kkc&mail=kkc@kkc.com
      #Output: Hello kcc please confirm your email kkc@kkc.com

      print <<HTML;
      <html>
         <head>
            <style type="text/css">.bold{font-weight:bold}</style>
         </head>
         <body>
            Hello <span class="bold">$params{user}</span> please confirm your email <span class="bold">$params{mail}</span>
         </body>
      </html>
HTML

      return 1;
   }

Надеюсь, это поможет.

2 голосов
/ 10 февраля 2010
use CGI;
use HTML::Template;

my $cgi = CGI->new;

my $html = qq{
    <!DOCTYPE HTML>
    <html>
    <head><title>Confirmation</title></head>
    <body><p>Hello <TMPL_VAR USER ESCAPE=HTML>. 
    Please confirm your email <TMPL_VAR MAIL ESCAPE=HTML></p></body>
    </html>
};

my $tmpl = HTML::Template->new(scalarref => \$html, associate => $cgi);
print $cgi->header('text/html'), $tmpl->output;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...