将数据从HTML表单传递到Perl脚本的步骤

时间:2012-08-05 15:49:50

标签: html perl apache cgi cgi-bin

我创建了一个简单的HTML,其中包含以下表单:

<form action="WEB-INF/cgi/run.pl" method="post">
      <table border="0" cellspacing="0"> 

      <tbody>
      <tr><th align="center" bgcolor="F7F5F2"> <p class="normal">Submission Form</p> </th></tr>

      <tr><td align="center" bgcolor="F7F5F2"> <p class="normal">Insert your text below:</p> </td></tr>
      <tr><td><textarea wrap="virtual" name="seq_data" rows="15" cols="80"></textarea></td></tr>  
    </tbody></table>
    or upload a file :   <input type="file" name="file" size="29" border="0"><br><br>
    <input class="normalc" value="Submit Query" type="submit">
    <input class="normalc" value="Clear Form" type="reset"><p></p>
</form>

我需要将表单中的数据作为输入传递给perl脚本(run.pl)。

在互联网上搜索时,我读过: 1)我需要通过apache tomcat测试我的网站。我已经安装了apache 7.0版并通过删除此servlet周围的XML注释来修改Tomcat 7.0 / conf / web.xml文件:

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

我还创建了目录“WEB-INF / cgi”,其中我放置了perl脚本。

2)我需要修改我的Perl脚本,但是我无法找到我应该添加的内容,以便将数据从html表单传递到我的脚本。

我不知道除了修改Tomcat和Perl脚本之外是否还有其他必要的步骤。 我已经阅读了很多相关的主题,但我还是找不到一步一步的指南。请帮忙。

2 个答案:

答案 0 :(得分:4)

当Web服务器收到HTTP请求时,它通常会响应资源的内容。但是,如果URL指定了Common Gateway Interface(CGI)资源,它将运行它并返回程序的输出。

服务器的配置指定了CGI和非CGI资源之间的区别,这可以基于文件扩展名 - .cgi.pl等 - 或者文件所在的位置服务器的目录结构。

服务器通过其STDIN以及进程的环境变量将HTTP请求中的信息传递给CGI程序。通常,PUTPOST请求的参数将显示在STDIN中,而GET请求的参数将插入到环境变量中。

该程序的工作是根据这些参数构建所需的响应并将其打印到STDOUT。它还可以利用数据库信息和其他系统信息。此输出将由服务器用作HTTP响应的内容。

您应该查看在方便的子例程中包装此接口的Perl CGI module

答案 1 :(得分:2)

<强> application.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>
    Application| Form
  </title>
  <style>
  input
  {
    display:block;
  }
  </style>
</head>
  <body>
    <form action="evaluate.pl" method="post" enctype="multipart/form-data">
      <input type="file" name="photo">
      <input type="file" name="photo">
      <input type="text" name="email_id" placeholder="email id">
      <input type="submit" value="submit">
    </form>
  </body>
</html>

<强> evaluate.pl

#!C:/wamp/bin/perl/bin/perl.exe
#Purpose: To find the number of photos uploaded

use CGI;
use strict;
my $cgi = new CGI;

print "Content-Type:text/html\r\n\r\n";

my $param = $cgi->{param};

foreach( keys(%{$param}) ){
  print $_," -> ",$param->{$_};
  print "<br/>";
}

您可以问我是否不知道如何从perl中的数组读取值,但首先尝试理解我发布的这个示例,然后我会帮助您。