CGI скрипт для установки куки и перезагрузки - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть CGI-скрипт, который получает некоторые параметры в URL и представляет форму.когда пользователь отправляет форму, информация в форме сохраняется в файле cookie.Теперь, после отправки, я хочу, чтобы тот же URL вызывался, включая параметры, с которыми он был первоначально вызван.

Пример: может быть, будет понятнее: кто-то называет меня так:

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

На этой странице пользователь может выбрать цвет (красный, желтый, зеленый).При нажатии кнопки «Отправить» я хочу, чтобы моя страница называлась так:

www.mysite.com / script.cgi? Name = nec & mail = necnec & color = green

Как мне это сделать?

Спасибо !!!

1 Ответ

0 голосов
/ 29 февраля 2012

Ваш скрипт с именем 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 

Использование метода param script.cgi будет принимать параметры name и mail и послеФорма отправки, эта страница приведет вас к test.pl .Здесь доступны параметры color , name и mail . Имя и почта отправляются с использованием скрытых полей.

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 

Вы также можете использовать action = 'script.cgi' в testform .И отображение имя , почта , цвет аналогично test.pl в script.cgi .

Cookie можно установить в test.pl .Это после отправки формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...