0

多くのフィールドを持つフォームがあります。ここでは単純化して、ここでは姓/名/メールアドレスしかないふりをしましょう。後でフォームを処理する必要があるため、Perl を使用してフォームを処理する必要があります。

フォームを送信すると、次の 3 つのことを行う必要があります。

  1. このフォームへの回答をサーバー上のテキスト ファイルに入れる。

  2. 新しいフォームが送信されたことを通知する電子メール アラートを送信する。フォーム データを含める必要はありません。新しいデータが存在するだけです。

  3. 送信ボタンを押した人に「フォームにご記入いただきありがとうございます」のページを表示する。

私は、これらのことのいずれかを実行できるようにすることに集中しようとしましたが、それでも実行できるほど十分に Perl を理解していません。私はせいぜい HTML ユーザーです。一連のかなり単純なことのように見え、どこかに「ストックアンサー」があるようなもののように思えますが、ここで多くのグーグルと回答を読んでも、何も得られませんでした! 最初の 1 つをどのように行うかについて少しでもアイデアを得ることができれば、それは素晴らしいスタートになるでしょうが、そこまで到達することさえできません… ☹</p>

4

1 に答える 1

1
  1. PlackMIME::Liteをインストールします。

    cpan Plack
    cpan MIME::Lite
    
  2. プレーンな HTML を使用してフォームを作成します (名前を付けますform.html)。

    <form action="/send">
        <label>Enter some stuff:</label>
        <input type="text" name="stuff">
        <button type="submit">Send</button>
    </form>
    
  3. 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>' ], 
            ];
        };
    
  4. Web アプリケーションを実行します。

    plackup --port 5000 app.psgi
    
  5. ブラウザで次の場所を指定します。http://localhost:5000

  6. 終わり。

これは最善の方法ではありませんが、簡単に始められることを示すための非常にシンプルな方法であり、そこから構築するための基礎を提供します。

于 2012-08-15T19:46:38.910 に答える