問合せページ開発メモ

会社のサイトに問合せページを作る。フリーの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で入れてたらなぜか化ける。申の字のコードが制御コードに該当するらしい。なので、"で囲んでいたものを'にして対応。