会社のサイトに問合せページを作る。フリーのCGIを使おうかと思ったけど、著作権表示とか色々面倒なので自作した。CPANモジュール使うと、簡単に作れちゃう!
今回の機能はこんな感じ。
問合せ・申込み機能 必須項目・文字列チェック メールアドレスが正しいかチェック エラー時は、エラー表示し、入力された文字はそのまま保持する 申込み完了後は、ファイルに内容を保存し、メールで自分たちに内容を通知
これらの機能を作るのに使ったモジュールはこれ
use HTML::FillInForm; use HTML::Template; use CGI qw(:cgi); use IO::File; use Encode; use Net::SMTP; use Mail::CheckUser qw(check_email);
FillInFormはすごく便利!ユーザからPOSTされた文字をそのまま次のHTMLのフォームに補完できる(フォームのnameが同じであれば)。エラー表示した画面のフォームの文字の補完はこれを使うだけで5行程度で実現できる。
Mail::CheckUserは、メールアドレスが正しいか判定してくれるモジュール。これがあれば2行でアドレス判定ができてしまう。@が無いとかそいう細かいチェックを書かなくていいので楽。
使い方はこんな感じ。
my $mail = 'foo@bar.com'; my $mail_ok = check_email($mail); あとは、メールアドレスが正しければ1が返るのでそれを判定するだけ。
プログラムはSJISで保存されていて、エラー文字列とかはプログラムに固定で入れてる。申込みという文字をSJISで入れてたらなぜか化ける。申の字のコードが制御コードに該当するらしい。なので、"で囲んでいたものを'にして対応。