PHPstep

トップページ > PHPでメール送信フォームを作ろう >

第二章 PHPでウェブアプリケーションを作ろう

PHPでメール送信フォームを作ろう2

「PHPでメール送信フォームを作ろう」の第2回です。 前回で、フォーム入力ページがひとまず完成しました。 今回から、フォーム入力ページから送信されたデータを受け取って、入力内容を確認するページを作っていきましょう。
※最終完成形はこちら→メール送信フォームサンプル

入力確認ページ(confirm.php)で行う処理の流れ

前回は、フォーム入力ページ(index.php)を作成しました。 ここからはフォーム入力ページから送信されたデータを受け取って、入力内容を確認するページ(confirm.php)を作っていきましょう。

これから作成していくconfirm.phpは、ユーザーの入力内容に不備が無いかどうかをチェックするページです。 おおまかに下記のような流れで一連の処理をします。

  1. ユーザーが入力したデータを受け取ります。
  2. 未入力のまま送信された項目が無いか未入力チェックをします。
  3. 入力内容を画面に表示して、ユーザー自身に送信内容の最終確認をしてもらいます。
  4. ユーザーが[この内容で送信する]ボタンを押したら、次のメール送信処理をするページへとデータを送信します。

前のページからデータを受け取る

テキストエディタのメニューから[ファイル]→[新規作成]と選択して、新しいファイルを作成します。 [ファイル]→[名前を付けて保存]を選択して、「confirm.php」というファイル名で新規保存してください。 前回作成したindex.phpをコピーして、ファイル名を「confirm.php」と書き換えても良いでしょう。

いま作成したconfirm.phpに下記の内容を記述してください。

サンプルソース:confirm.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>入力内容の確認|メール送信フォーム</title> </head> <body> <?php echo $_POST["namae"]; ?> </body> </html>

入力が完了したら、confirm.phpを上書き保存してください。

ブラウザで表示確認してみよう

前節で作成したindex.phpから、いま作成したconfirm.phpへのページ遷移をブラウザで確認してみましょう。

XAMPPによる動作確認手順
  1. ブラウザのアドレス欄に http://localhost/sample/mailform/ と入力して、フォーム入力ページを表示させます。
  2. フォーム入力欄に何か適当に入力して、[入力内容を確認する]ボタンを押します。

送信ボタンを押した後の画面で、入力した名前が表示されていれば成功です。 この時点でブラウザのアドレス欄は「http://localhost/sample/mailform/confirm.php」となっているはずです。



記述したソース内容を確認しよう

何が起きたのか確認していきましょう。

form要素のaction属性で指定したアドレスへデータが送信される

データを送信するindex.php側では、下記のようにデータの送信先としてconfirm.phpを指定しています。

サンプルソース:confirm.phpの抜粋
<form method="post" action="confirm.php">

フォームの送信ボタンを押すと、入力された内容がform要素のaction属性で指定したアドレスへ送信されます。

$_POST["namae"]でデータを受け取る

データを送信するindex.php側では、下記のようにデータにnamaeというデータ名を付けました。

サンプルソース:index.phpの抜粋
<input type="text" maxlength="255" name="namae">

そして、データを受け取るconfirm.php側では、$_POST["namae"] の部分で送信されたデータを受け取っています。 送信側と受信側のデータ名を同じにすることで、データの受け渡しが出来るのです。

サンプルソース:confirm.phpの抜粋
echo $_POST["namae"];

echoは「指定した文字列を書き出しなさい」という命令です。 データを正しく受け取ったかどうかを確認するため、 $_POST["namae"] に格納されたデータ内容をecho命令で画面表示させています。

コラム「form要素のmethod属性でデータの送信形式を指定する」

index.phpでは、form要素のmethod属性にpostという値を指定しています。

サンプルソース:index.phpの抜粋
<form method="post" action="confirm.php">  :  : </form>

このmethod属性の値はデータの送信形式を指定しています。 メール送信フォームなどで比較的長いテキスト内容を送信する場合には、method="post"を指定するのが一般的です。

method属性には、postの他にもgetなどの値が指定できます。

サンプルソース:getを指定した例
<form method="get" action="search.php">  :  : </form>

method="get"は、 例えば、ページ番号や検索キーワードなどの比較的短めの値を送信する際に用いられることの多い送信形式です。 getは送信先URLの末尾にページ番号や検索キーワードなどのクエリがそのまま追加されるので、検索結果などを固定URLとして指定することができます。

今回利用したpostでは、送信内容がURLの末尾に付かないため、メール送信結果を固定URLで指定することはできません。 しかし、固定URLで指定できないことは、メール送信フォームの場合には悪いことではなく、むしろ二重投稿が起きにくくなるなどのメリットが得られます。

このように、フォームを作成する場合には、受け渡すデータの性質によってmethod属性の値を使い分けます。


  1. フォーム入力ページを作成する
  2. 送信されたデータを受け取る
  3. 変数に代入する
  4. 受け取ったデータを安全な文字列に変換する
  5. 未入力チェック機能をつくる
  6. 未入力チェック機能を洗練させる
  7. [前のページへ戻る]ボタンをつくる
  8. 入力内容確認ページを完成させる
  9. メール送信処理ページを作成する
  10. メール送信フォームを完成させる