初心者も分かるようPHPメールフォームを解説
$_Postの中身を確認しよう!
さて、ここまで頑張って作ったメールフォームの内容ですが、無事に次ページに入力内容を送ることは出来たでしょうか?
正常にPostされているかどうか、一番簡単に知る方法は
です。print_rもvar_dumpも、どちらも配列の中身を参照するのに使います。
check.php
次の確認ページのcheck.phpで$_Postを参照します。
<?php echo '<pre>'; print_r($_Post); echo </pre>'; ?>
check.phpにはまずはこれだけ書いて保存します。
(preタグ使わなくてもかまいません。配列の中身を参照した時に、キレイに見えるというだけです。)
mail.phpをブラウザで開いて、フォームに内容を入力し、submitボタンを押して次に進みましょう。
check.phpでこのような表示が出れば問題なくPostされていることが分かります。
Array ( [sub_actions] => confirm [name] => hoge [e_mail] => [email protected] [comment] => test [submit] => 確認画面へ )
Arrayとは配列のこと。$_Postも結局は配列ということが分かる
今回はメールフォームの勉強なので配列については細かいことは触れません。
print_rやvar_dumpを使えば、配列の中身を参照することが出来る!と覚えておけばそれだけで大丈夫です。
では、配列の出力結果を確認しながら、確認画面を作ります。
<form id="contact-form" action="./send.php" method="post"> <input type="hidden" name="sub_actions" value="confirm"> <table> <tbody> <tr> <th>お名前</th> <td><?php echo htmlspecialchars($_POST['name']);?></td> </tr> <tr> <th>メールアドレス</th> <td><?php echo htmlspecialchars($_POST['e_mail']);?></td> </tr> <tr> <th style="vertical-align:top;">お問い合わせ内容</th> <td><?php echo htmlspecialchars($_POST['comment']);?> </td> </tr> </tbody> </table> <div class="bt"> <p>PCやスマホのメールフォームの修正ボタンなんかhistory.back()で十分!</p> <a href="javascript:history.back();"> <input type="button" value="戻る"> </a> <input type="submit" value="送信" name="submit"> </div> </form>
簡単ですね!
確認画面なので、ここで入力する内容は特にないですが、ボタンを押してさらに次の送信ページへ遷移させるというフローの関係で、
ここでもformタグを使います。
check.phpの一番上に以下PHPを記述
その他check.phpに記述するPHPはたったこれだけ。
if(!$_POST){ header('Location: ./mail.php');// headerlocationはPHPのリダイレクト処理でよく使う。 } //Sessionを開始するときの決まり文句、これがないとSessionが開始できない session_start(); $_SESSION = $_POST;//Postされた情報を$_SESSIONに代入します
このページは、前ページのmail.phpから、submitボタンを押して初めて表示されるページ。と、いうことはいきなりこのページに物理的にアクセスするとは考えずらいですね。
何らかの形でいきなりこのページにアクセスしてきたケースは、前ページにリダイレクトさせる必要があります。
これが最低限 悪さをされないための処理です。
session_start()を忘れないで!
このプログラムは、最後の送信ページまでデータを引き継がなければなりません。
Sessionを使うんでしたね。Sessionを使うときは、Sessionを使う前に
を使って、宣言します。これがないと、Sessionを使うことが出来ません。そして最後に
Postされた情報を$_SESSIONに代入する処理をして、確認ページはおしまいです!
では、最後にもう一度送信ページをおさらいしておしまいになります。