Blog

ブログ

お問い合わせフォームを作りました

contact

「うぇびんぐさん、あのページ、もう一年くらい準備中ですよねw」

と、取引先の営業Tさんに言われていた「お問い合わせフォーム」が復活いたしました。

これまでは無料のフォームをカスタマイズしていましたが、勉強も兼ねて、自分でいちからPHPを書きました。
Ajax連動なんてできてないし、自動返信機能も付いてないのですが、やっとPHPで実用のアプリケーションを作ることができたので、ちょっとうれしいです。

で、何故ずっとメールフォームを作っていたのか、という話です。

セキュリティの基礎をしっかりやる

このフォーム、入力チェックをガチガチ入れています。
メールアドレスをカンマ区切りでごっそり書かれた場合や、外国からのスパム、ボットの連続送信、確認画面の後で送信データを改ざんされた場合など、素人なりにできるだけの対策を講じてみました。
そうでなければ怖くてお仕事で使えません。

メールフォームは、データの扱いが不特定の訪問者にゆだねられるので、慎重にならざるを得ません。
実際、プログラミングの知識が浅い人が自作のフォームを配布して、プログラマにダメ出しされることはよくあります。
こういうことを先にきちんとやっておけば、いつかプログラミングのお仕事をすることになったときに、お客様に迷惑をかけることはないだろうと思ったのです。

複雑な分岐があるフォームがほしい

contact1

所属を「制作会社」か「一般法人」にすると、社名の入力が必須になります。
これ以外の場合は空欄でも通ります。

ウェブサイト構築のお仕事でフォームを設置することは多いのですが、このような
「○○の入力値が××だったときのみ、△△を入力必須にする」
という処理はできないか、と尋ねられることが多いです。

このような機能は、一般的に手に入るフォームにはほとんどありません。
100%完璧にできなくてもいい、という場合はjQueryで強引にフォームを書き換えることもあるのですが、そういったことはあまりしたくありません。

やっぱり、フォーム自体を自作できるようになるしかないかと思い、今回のお問い合わせフォームにがんばって入れてみました。

フォームを搭載しているCMSも増えたけど

最近のCMSは、ほとんどが高機能なフォームを備えています。
WordPress の「Contact Form 7」にもずいぶんお世話になっています(リロードするとメールが再送されちゃいますが…笑)。

CMS連動のフォームはカスタマイズの手間なく設置ができて普段はとても良いのですが、SSLページへの設置を求められた場合は、フォーム自体をSSL領域に置かなければいけないので利用できません。
先述したようなトリガー機能も流石にありません。
やはり、小回りの利く単独のフォームも確保しておきたいのです。

管理画面+DB連動を視野に入れる

このフォーム、入力項目の設定部分を連想配列で書いています。なので、今の時点では入力ページは普通の静的HTMLになっていますが、PHPで自動生成させることもできます。

本格的なメールフォームのように、ラベル名・inputの表示タイプ・順番・チェック項目などの要素を管理画面+データベースで制御して、使い回しが効くようにしたいのです。
きちんと規格化したアプリケーションを作っておけば、データベースやセッションなど、次のステップの勉強に進みやすいだろうともくろんでます。アンケートや掲示板への改造もしやすいですし。

私はお仕事でプログラミングをすることがほとんどないので、本に書いてある以外のことがなかなかつかめません。
「わかりやすい」「論理的な」コーディングとはどう書けばいいのかとか、関数の再帰処理(関数をその関数自体の中でもう一度呼び出す処理)の辺りなどさっぱりわかりません。
DevDoの人たちに、その辺のポイントなどアドバイスをもらおうと思います。

デザインやコーディングのお仕事があるのでなかなか時間が取れませんが、確実に前進していると自分をごまかしつつまた頑張ります。