2011-04-18 99 views
0

我正在處理一個文件,我想了解如何處理一個表單,希望傳遞一個隱藏的字段。爲了簡單起見,我們可以說我希望我的scipt在第一次呈現給用戶時顯示隱藏字段的值,增加1,並在「提交」之後顯示隱藏字段的新腳本。我試圖獲得有關明確程序的見解,所以我可以將其應用到我當前的一個項目中。 我已經在網上搜索,但大多數例子只是混淆了我,任何人都可以參加?perl cgi表單處理

+0

更多信息將是有益的 - 你有一些Perl代碼已經寫的嗎?你有什麼模塊使用,如果有的話?什麼是您的HTML? – justkt 2011-04-18 17:57:59

+0

請停止使用骯髒的舊CGI.pm.改用現代和乾淨的網絡引擎,例如[舞者](http://www.perldancer.org/)或[Mojolicious](http://mojolicious.org/)。 – dolmen 2012-08-31 09:44:57

回答

4

值可以使用CGI模塊(因爲你還沒有表現出任何的代碼,我不知道您是否使用CGI或試圖以處理手頭的CGI交互檢索;如果你正在用手工做,你做錯了)和它的param方法。

由於HTML表單:

<form action='my_script.cgi' method=POST> 
    <input type=hidden name=hidden_field value=1> 
    <input type=submit> 
</form> 

可以檢索與潛在價值(在my_script.cgi):

#!/usr/bin/env perl 

use strict; 
use warnings; 

use CGI; 

my $q = CGI->new; 
my $hidden_value = $q->param('hidden_field'); 
0

您可以將隱藏字段的值寫入cookie。每次刷新或重新訪問同一個網頁時,您的腳本都可以將cookie讀入隱藏變量並將其加1。以下示例在表單中使用變量而不是隱藏字段。提交表單

#!/usr/bin/perl 
#countvisits.cgi 
use strict; 
use warnings; 

use CGI qw(:standard -debug); 
use CGI::Carp qw(fatalsToBrowser); 

#declare variables 
my ($count, $C_record); 

#Create a new CGI object 
my $cgi = new CGI; 

#Read the cookie 
#assign input to variable 
$count=$cgi->cookie('count'); 

$count++; 

#create cookie 
$C_record = cookie(-name => "count", 
       -value => $count, 
       -expires => "6M"); 


#send cookie to browser 
print header(-cookie => $C_record); 

#create Web page 
print "<HTML>\n"; 
print "<HEAD><TITLE>Jubilee Book Club</TITLE></HEAD>\n"; 
print "<BODY>\n"; 
print "<H1 ALIGN=center>Hello!<BR>\n"; 
print "You have been here $count times.</H1>\n"; 
print "</BODY></HTML>\n"; 
+0

感謝您的答覆,這是一個非常聰明的方式去實現它,但我只能使用表單處理,有沒有一種方法可以使用表單進行相同操作?我是perl的新手,所以我想了解在形式動作調用中會用到什麼,如果隱藏的字段需要在傳遞時被解碼等。我感謝你能找到的任何東西,甚至包括提供良好解釋文章的任何鏈接。我現在已經打了好幾天了,我的形式和價值觀已經通過了,我只是不知道如何通過它們。 – idkWATimDOIN 2011-04-18 21:25:03

+0

@Dave Sherohman的回答對我來說很好。確保您的隱藏字段具有名稱屬性。提交表單時,任何具有name屬性的表單字段的值都可以通過CGI對象的param方法由action屬性中指定的腳本檢索。 – d5e5 2011-04-19 19:21:24