提交到Perl脚本的HTML表单

时间:2014-05-07 20:24:06

标签: html forms perl validation

好的,所以如果有人可以帮助我,我将永远感激不尽。我有一个会议形式,所以用户要做的是选择3个上午课和3个下午课。这些都是复选框,代码示例如下:

<input type="checkbox" name="ece_classes" value="name 1">
<input type="checkbox" name="ece_classes" value="name 2">
<input type="checkbox" name="ece_classes" value="name 3">

现在这些都在1表格列中,而在其旁边的另一列中是优先列表:

<select name="Priority">
  <option value="">
    --Select--
  </option>
  <option value="1">
    1
  </option>
  <option value="2">
    2
  </option>
  <option value="3">
    3
  </option>
</select>

我的Perl脚本具有以下与复选框有关的内容:

$finalmailbody .= "Morning Presenters: $testhash{ece_classes},\n\n";

现在,当电子邮件与所有信息一起发送时,它不会列出所有选定的3个类,而只列出最后选择的一个。

perl脚本用于发送所有用户的个人信息和支付流程,但是这不是,但这是我不知道如何处理的脚本的唯一部分。

几乎总结我正在寻找的东西(因为上面的内容可能非常令人困惑)如下:

我有一份表格,上面列有15个上午课程和15个下午课程,然后是他们需要的个人信息。用户必须选择3个早晨和3个下午课程,同时还要选择课程的优先级(1-3)。提交表单后,将转至/cgi-bin/forms/eceform.pl。在这个perl脚本中(我没有创建,我只知道如何对单个字符串数据进行操作),它会获取所有这些数据,然后通过电子邮件将其发送到指定的电子邮件地址。我需要知道如何打印出电子邮件中选择的类,因为所有早上的类都使用相同的名称(ece_classes),所有下午的类都使用相同的名称(ece_classes_a)。在此之前我从未使用过perl,我发现这部分非常复杂。任何帮助将不胜感激。

如果您需要了解其他信息,请与我们联系。 谢谢,

编辑:如果有帮助,这是当前脚本的样子:

    #!/usr/bin/perl

#Variables
$queryString;
$contentLength;
$number;
$sendmail="/usr/sbin/sendmail";

#Array Variable
@testarray;

#Hash Variable (Two-dimensional array that
#references its contents with keys and values
%testhash;

#################################################
##Read the envirionment variables              ##
#################################################
$contentLength = $ENV{"CONTENT_LENGTH"};
$return = "/thankyou";

############################################
##Make sure that there is data to read and##
##if there is, read it                    ##
############################################
if($contentLength != NULL){
    read(STDIN, $queryString, $contentLength);
}

###############################################################
##Split the information read in into an array in the         ##
##form of a list which contains the keys and values          ##
##as separate items. eg("key1","value1","key2","value2",etc.)##
###############################################################
@testarray = split(/&|=/,$queryString);

###############################################
##place the size of the array into a variable##
###############################################
$number = @testarray;

#############################################################
##Loop through each item in the array, convert the + to    ##
##spaces, convert the HEX into the character it represents,##
#############################################################
for ($counter = 0; $counter <= $number; $counter++){
    @testarray[$counter] =~ s/\+/ /g;
    @testarray[$counter] =~ s/%([0-9A-Fa-f]{2})/pack("c",hex($1))/ge;
}

#####################################################
##Place the contents of the array @testarray into  ##
##the hash variable %testhash. Each key in the hash##
##represents a value.                              ##
#####################################################
%testhash = @testarray;

######################
##Format the Message##
######################
$finalmailbody = "Conference Registration Form\n\n";


$finalmailbody .= "Morning Presenters:  $testhash{ece_classes},\n\n";


$finalmailbody .= "Payment Type:        $testhash{Payment_Type}\n\n";
$finalmailbody .= "Title:           $testhash{Title}\n";
$finalmailbody .= "First Name:      $testhash{First_Name}\n";
$finalmailbody .= "Last Name:       $testhash{Last_Name}\n";


##############################################
##Open the email message and send the email.##
##############################################
open(MAILREGISTRATION, "|$sendmail -oi -t") || die  "Can't open pipe to $sendmail: $!\n";
print MAILREGISTRATION "To: person\@website.ca\n";
print MAILREGISTRATION "From: $testhash{Email}\n"; 
print MAILREGISTRATION "Subject: Conference Submission\n\n";

#############################################
##Place the body of the email message here.##
#############################################
print MAILREGISTRATION "$finalmailbody";

close(MAILREGISTRATION) or die "Can't close pipe to $sendmail: $!\n";

#############################################
##Place the body of the email message here.##
#############################################
#print MAILCONFIRM "$finalmailbody";

#close(MAILCONFIRM) or die "Can't close pipe to $sendmail: $!\n";

########################
##Output to a web page##
########################
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "  <META HTTP-EQUIV=Refresh CONTENT=0;URL=$return>\n";
print "</HEAD>\n";
print "<BODY>\n";
print "</BODY>\n";
print "</HTML>\n";

1 个答案:

答案 0 :(得分:0)

该脚本是一个(旧的旧旧OLD)脚本,它读入已发布的数据并将其拆分为存储在%testhash中的键值对。类名是exe_classes键的值。