PHPでお問い合わせフォームを作ってみよう
最近、新人君たちにプログラミングを教える機会が多くなってきました。
教えていく中で「自分の教え方って大丈夫なんだろうか?」と最近不安になっている次第。
という事で簡単なお問い合わせフォームを作る事で、人への教え方を再考するために「お問い合わせフォーム」を題材にちょっとずつ難しい事を実装していきます。
そして、最終的には実戦で使えるようなフォームを作れるようになります。
フォームの全体の流れ
- 入力画面
- 確認画面
- 完了画面
てな感じで
じゃあ、もうちょっと細かくみてみましょう
入力画面
うん、これがないと始まらないですね。
今回はお決まりの以下の入力項目にしてみます
項目1 お名前
項目2 メールアドレス
項目3 お問い合わせ内容
お、お、ぉぅ 最低限の設定やね。。今後拡張していく予定なので我慢してください。。。
確認画面
そう、ここで入力した内容を表示して「送っていいですか?」って確認させます。
完了画面
要するに「ありがとうございました」ページです
ここでメール送信とかデータベースに接続とかいろいろあるけど、とりあえずはメール送信しときましょう
細かいとこ
とりあえずPHPで動く事を目標にするのでCSS等は後回しにします
入力画面
取り敢えず最低限のこのhtmlで
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>phpでフォーム送信</title>
</head>
<body>
<form action="./confirm.php" method="post">
<div id="contents">
<div id="name">
お名前 <input type="text" name="name">
</div>
<div id="mail">
メールアドレス <input type="text" name="mail">
</div>
<div id="toiawase">
お問い合わせ内容 <textarea name="toiawase"></textarea>
</div>
</br>
</br>
<input type="submit" value="確認">
</div>
</form>
</body>
</html>
味気の無い画面ですね。
name="name" のテキストボックスが名前を入れるところです
name="mail" がメールアドレス、テキストエリアに問い合わせ内容ですね
そして formタグで 確認ボタンを押した後のリクエスト先が指定されています
action=./confirm.php"
です。この記述で、ボタンを押したらconfirm.phpにリクエストを投げます。
そして method="post
の記述でリクエスト時はPOSTでデータを投げる、と指定しています。
確認画面
入力画面で確認ボタンをクリックすると form タグの指定通り confirm.php にリクエストが投げられます。
<?php
$name = $_POST['name'];
$mail = $_POST['mail'];
$toiawase = $_POST['toiawase'];
echo "
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Insert title here</title>
</head>
<body>
お名前:$name
</br>
メールアドレス:$mail
</br>
お問い合わせ内容
</br>
$toiawase
</br>
</br>
<form action='complete.php' method='post'>
<input type='hidden' name='name' value='$name'>
<input type='hidden' name='mail' value='$mail'>
<input type='hidden' name='toiawase' value='$toiawase'>
<input type='button' onclick='history.back()' value='戻る''>
<input type='submit' value='確認'>
</form>
</body>
</html>";
はい、必要最低限の記述です。
index.html
で入力された内容が表示されると思います。
ここ(confirm.php)で、本当はやっておかなきゃいけない事、やっておいた方が良い事、やらない方が良い事を書いておきます
やっておかなきゃいけない事
postで投げられたデータのチェック(nullチェック、文字数チェック、その他もろもろチェック)
やっておいた方が良い事
セッションへの値保存、テンプレートの使用
やらない方が良い事
hidden タグの使用
これらのやり方、対応方法は後々の記事で書いていきます。
ここまでで データの入力、データの送信、データの受信、データの表示まで出来ました。
この画面で確認がOKであれば 次へボタン をクリックして完了画面に移ります
確認画面
<?php
$name = $_POST['name'];
$mail = $_POST['mail'];
$toiawase = $_POST['toiawase'];
$mailTO = $mail;
$mailHeader = "From: from@from.com";
$mailSubject = "お問い合わせありがとうございます";
$mailBody = $name . "様 お問い合わせありがとうございます";
$mailBody .= "¥n";
$mailBody .= "ご返信まで~~~~";
mail($mailTO, $mailSubject, $mailBody, $mailHeader);
echo "
<!DOCTYPE html>
<html>
<head>
<meta charset='UTF-8'>
<title>Insert title here</title>
</head>
<body>
お問い合わせありがとうございます。
</body>
</html>
";
はい、これでデータ(名前、メールアドレス、問い合わせ内容)を入力し、データを送信
confirm.php で受け取ったデータの表示、データの送信
complete.php でデータ受け取り、メール送信、完了画面の表示
ここまで出来ました。
最後に
今回書いた内容は本当に必要最低限の流れですが、次回からこのフォームに肉付けしていこうと思います。