繁体   English   中英

Perl CGI Form Post输入脚本不起作用

[英]Perl CGI Form Post input script not working

我试图在我的网站上创建一个网页,该网页从表单(名字,姓氏)中获取输入,并通过PERL CGI脚本处理此输入并将该输入写入文件。

我还希望脚本运行后的页面显示一条消息,说明它已成功完成,并带有返回首页的链接。

我很确定引用该脚本时我的HTML页面是正确的,因此我将在下面发布我的perl脚本。

提前致谢。

#!/usr/bin/perl
use strict; use warnings;
use CGI::Carp qw('fatalsToBrowser'); # send errors to the browser, not to the logfile
use CGI;

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

print start_html ("Receive Form Post");

my $datestring = localtime();
my $fname = param('firstname');
my $lname = param('lastname');

open (TESTFILE, '>>c:\inetpub\wwwroot\logfiles\bwrigsbee.txt') or die;

print TESTFILE "This file has been successfully edited on $datestring\n";
print TESTFILE "by $fname $lname\n";

close (TESTFILE);

print end_html;

调用脚本的页面中的HTML表单:

   <form action="logwrite.pl" method="POST">
    <table style="width:400px" border=1px border=solid border=black>
        <tr>
            <td>First name: <input type="text" name="firstname"></td>
        </tr>
        <tr>
            <td>Last name: <input type="text" name="lastname"></td>
        </tr>
        <tr>
            <td><input type="submit" value="Submit"></td>
        </tr>
    </table>
   </form>

从浏览器中调试信息->未定义的子例程&main :: param在C:\\ studentwebusers \\ CIS33715 \\ logwrite.pl第11行处调用。

删除您使用的CGI::Carp调用中的单引号:

use CGI::Carp qw(fatalsToBrowser);

同样,您对header的调用不应包含其他参数。 它可以接受'text / html'类型,但是所有其他信息都是错误

print header;

随时进行文件处理时,请使用autodie 这样,您就不必费心创建详细的错误消息。 并使用带有词法精细句柄的open的3参数形式。

最后,继续对CGI所有方法使用对象表示法。 这会将您的脚本更改为以下内容:

use strict;
use warnings;
use autodie;

use CGI::Carp qw(fatalsToBrowser); # send errors to the browser, not to the logfile
use CGI;

my $q = CGI->new;

print $q->header;
print $q->start_html("Receive Form Post");

my $datestring = localtime();
my $fname = $q->param('firstname');
my $lname = $q->param('lastname');

open my $fh, '>>', 'c:\inetpub\wwwroot\logfiles\bwrigsbee.txt';
print $fh "This file has been successfully edited on $datestring\n";
print $fh "by $fname $lname\n";
close $fh;

print $q->end_html;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM