考え、感じる、Web制作。

Web制作の学習や情報についての記事が中心です。

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'))

完成画像

css編集後の完成画像をアップする。

入力ページ(index.php)

f:id:ys_nim_9:20141023084627j:plain


確認ページ(check.php)

f:id:ys_nim_9:20141023084633j:plain


完了ページ(thanks.php)

f:id:ys_nim_9:20141023084638j:plain

感想

今回はphpでも初歩的なメールフォームの作成に挑戦した。プログラミングの常で、本筋よりもエラー回避などのコード記述が長くなった。複雑な点はなかったが、そらで完璧に書けるか、と言われると自信がない。業務でメールフォームを最初から組む、という機会は少ないだろうが、今回登場したsessionの概念や初歩的なセキュリティは必須事項と思われる。これらについては習得必須であり、今後も学習を続けたい。