我有一个包含许多字段的表单。让我们简化并假装它现在只有forename / surname / email。我必须使用Perl来处理表单,因为我稍后需要用它来做其他事情。
在提交表单时,我需要它做三件事:
将对此表单的回复放入服务器上的文本文件中。
发送电子邮件提示,说明已提交新表单。它不需要包含表单数据,只需要新的表单数据。
向刚刚点击提交的人显示“感谢填写表格”页面。
我已经尝试过专注于让它做任何一件事,但我仍然不了解Perl足以做到这一点。我充其量只是一个HTML用户。这看起来像是一系列相当简单的事情,看起来就像某个地方会有一个“股票回答”的东西,但谷歌搜索的很多并在这里找到答案给了我任何东西!如果我能够对如何做第一个问题有所了解,那将是一个很好的开始,但我甚至无法做到那么远......☹
答案 0 :(得分:1)
安装Plack和MIME::Lite。
cpan Plack
cpan MIME::Lite
使用纯HTML构建表单(将此名称命名为form.html
或其他)。
<form action="/send">
<label>Enter some stuff:</label>
<input type="text" name="stuff">
<button type="submit">Send</button>
</form>
编写PSGI应用程序(将此文件命名为app.psgi
)。
use strict;
use warnings;
use autodie;
use Plack::App::File;
use Plack::Builder;
use Plack::Request;
use MIME::Lite;
builder {
mount '/form.html' => Plack::App::File->new( file => "form.html" );
mount '/send' => sub {
my $req = Plack::Request->new($env);
open my $fh, '>', 'form.txt';
print $fh $req->content; # this will be ugly, but you didn't say what format
close $fh;
my $email = MIME::Lite->new(
From => 'website@example.com',
To => 'user@example.com',
Subject => 'Form submitted from web site',
Data => 'Read the subject.',
);
$email->send;
return [
200,
[ 'Content-Type' => 'text/html' ],
[ '<h1>Thanks for filling in the form.</h1>' ],
];
};
运行您的网络应用程序:
plackup --port 5000 app.psgi
将浏览器指向:http://localhost:5000
完成。
这不是做这些事情的最好方法,但它是一种非常简单的方式来展示入门是多么容易,并提供了构建的基础。