Forms 如何在文本文件中记录投稿?

Forms 如何在文本文件中记录投稿?,forms,perl,Forms,Perl,我有一个有很多字段的表单。让我们简化一下,假设现在这里只有名字/姓氏/电子邮件。我必须使用Perl来处理表单,因为我以后需要用它做其他事情 提交表格时,我需要它做三件事: 将对此表单的响应放入服务器上的文本文件中 发送电子邮件提醒,告知已提交新表单。它不需要包含表单数据,只要有一个新的表单数据就可以了 向刚刚点击提交的用户显示“感谢填写表单”页面 我已经试着集中精力让它做这些事情中的任何一件,但我仍然不太理解Perl,无法做到这一点。我充其量只是一个HTML用户。这似乎是一系列相当简单的事情要做

我有一个有很多字段的表单。让我们简化一下,假设现在这里只有名字/姓氏/电子邮件。我必须使用Perl来处理表单,因为我以后需要用它做其他事情

提交表格时,我需要它做三件事:

  • 将对此表单的响应放入服务器上的文本文件中

  • 发送电子邮件提醒,告知已提交新表单。它不需要包含表单数据,只要有一个新的表单数据就可以了

  • 向刚刚点击提交的用户显示“感谢填写表单”页面

  • 我已经试着集中精力让它做这些事情中的任何一件,但我仍然不太理解Perl,无法做到这一点。我充其量只是一个HTML用户。这似乎是一系列相当简单的事情要做,似乎是那种在某处会有“股票答案”的事情,但大量的谷歌搜索和阅读答案并没有给我任何东西!如果我能对如何做第一个有一些想法,那将是一个很好的开始,但我甚至不能走那么远…☹

  • 安装和安装

    cpan-Plack
    cpan MIME::Lite
    
  • 使用纯HTML构建表单(将其命名为
    form.HTML
    或其他名称)

    
    输入一些内容:
    发送
    
  • 编写一个PSGI应用程序(将此文件命名为
    app.PSGI

  • 将浏览器指向:
    http://localhost:5000

  • 完成了


  • 这并不是最好的方法,但这是一个非常简单的方法,可以展示它是多么容易开始,并提供一个从中构建的基础。

    请发布您迄今为止的尝试。您已经为此工作了一年了吗?到目前为止你都试了些什么?
    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>' ], 
            ];
        };