CGI脚本设置co​​okie并重新加载

时间:2012-02-26 20:32:57

标签: perl cgi

我有一个CGI脚本,它在URL中获取一些参数,并呈现一个表单。 当用户提交表单时,表单中的信息将保存在cookie中。 现在,按下提交,我希望调用相同的URL,包括最初调用它的参数。

示例:可能更清楚: 有人这样打电话给我:

www.mysite.com/script.cgi?name=nec&mail=necnec

在此页面上,用户可以选择颜色(红色,黄色,绿色)。 当按下按钮提交时,我希望我的页面被称为:

www.mysite.com/script.cgi?name=nec&mail=necnec &安培;颜色=绿色

我是怎么做到的?

感谢!!!

1 个答案:

答案 0 :(得分:0)

名为 script.cgi 的脚本可能如下所示。

script.cgi

#!C:\Perl\bin\perl.exe
use strict;
use warnings;  
use CGI;  
my $query = new CGI;  
my $p_name=$query->param('name')|| "NO Name";  
my $p_mail=$query->param('mail')|| "NO Email";  
print $query->header( "text/html" );  
print <<START_HERE;  
       <html>  
       <head>  
           <title>Your First CGI Script</title>  
       </head>  
       <body>  
           <h1>This is a script Web page</h1>  
           <p>  
              <form name='testform' method='get' action='test.pl'>  
              <input type="hidden" name="name" value=$p_name />  
              <input type="hidden" name="mail" value=$p_mail /> 
              <select name='color'>  
                      <option value="red">Red</option>  
                      <option value="green">Green</option>  
                      <option value="white">White</option>  
                      <option value="yellow">Yellow</option>  
               </select>  
               <input type='submit' value='submit' name="submit" />  
               </form>  
            </p>  
          </body>  
          </html>  
          START_HERE 
    #must have a line after "START_HERE" or Perl won't recognize  
    #the token 

使用参数方法 script.cgi 将参数名称邮件和 表单提交后,此页面将带您进入 test.pl 。此处颜色名称邮件参数可用。因为名称和邮件是使用隐藏字段发送的。

test.pl

#!C:\Perl\bin\perl.exe
use strict;  
use warnings;  
use CGI;  
my $query = new CGI;  
my $cookie_color=$query->cookie('color');
my $name=$query->param('name')|| "NO Name";  
my $mail=$query->param('mail')|| "NO Email";  
my $color=$query->param('color')|| $cookie_color || "NO color";
my $cookie = $query->cookie(-name=>'color',
    -value=>$color_value,
    -expires=>'+4h',
    -path=>'/');
print $query->header( "text/html" );  
print $query->header(-cookie=>$cookie);
print <<START_HERE;  
         <html>  
           <head>  
              <title>Script to check the Parameters</title>  
           </head>  
           <body>  
              <h1>This is a test Web page</h1>  
              <p>Name: $name</p>  
              <p>Mail: $mail</p>  
              <p>Color: $color</p>  
           </body>  
        </html>  
       START_HERE   
#must have a line after "START_HERE" or Perl won't recognize  
#the token 

您还可以在 testform 中使用 action ='script.cgi'。并在 script.cgi 名称邮件颜色,类似于 test.pl >

可以在 test.pl 中设置Cookie。那是在提交表格之后。