php 自作メールフォーム 改良4
php 自作メールフォーム 最終回
長らく続けてきたメールフォームの制作も今回で最後となる。
電話番号欄を追加
今まで入力値は名前、email、メッセージの3つだけだったが、電話番号を追加してみる。-や()抜き数値のみの入力にすれば、型のチェックでエラーが可能。変数名は$telとする。
コード記述
変数の追加文は割愛。初期化やセッションデータ代入などは前回foreachに書き換えているので必要がない。ここでforeachが生きてくる。
if(is_numeric($tel)===false){ $err=false; $err_tel=$err_tel."電話番号に数字以外が入力されています。"; }
is_numeric($tel)は変数が数値か数値文字列であればtrueを返す。数値文字列でもtrueなので0から始まる電話番号を判別するのに都合がよい。なお、全角文字入力を判別しエラーを返す機能も書いたが、email欄と同様の術のため割愛。
完成
今回はここまでで完成とする。
実装機能
実装された機能は下記のとおり。
- メール送信機能(mailto文)
- 入力値にエラーがある場合は完了画面に飛ばさない(if文)
- 全項目に未入力判別(if文,empty文)
- 全項目に文字数制限超過判別(if文)
- メールアドレスに全角文字有無判別(strlen,mb_strlen文)
- メールアドレスに@有無判別(strpos文)
- 電話番号に全角文字有無判別(is_numric文)
- 確認画面から入力画面に戻った際に入力値を保持する(session)
- url直打ちリダイレクト(header文)
- frame,iframeの禁止(header('X-Frame-OPTIONS:DENY'))
感想
今回はphpでも初歩的なメールフォームの作成に挑戦した。プログラミングの常で、本筋よりもエラー回避などのコード記述が長くなった。複雑な点はなかったが、そらで完璧に書けるか、と言われると自信がない。業務でメールフォームを最初から組む、という機会は少ないだろうが、今回登場したsessionの概念や初歩的なセキュリティは必須事項と思われる。これらについては習得必須であり、今後も学習を続けたい。