初心者も分かるようPHPメールフォームを解説 ITかあさん

ITかあさん

初心者も分かるようPHPメールフォームを解説


$_Postの中身を確認しよう!

さて、ここまで頑張って作ったメールフォームの内容ですが、無事に次ページに入力内容を送ることは出来たでしょうか?
正常にPostされているかどうか、一番簡単に知る方法は

$_Postをprint_rまたはvar_dumpを使って、配列の中身を参照する

です。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] => test@example.com
    [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>

簡単ですね!

htmlspecialchars()は、HTMLタグを排除することが出来ます。もしも不正なJavascriptを入力してきたらここで表示上排除します。

確認画面なので、ここで入力する内容は特にないですが、ボタンを押してさらに次の送信ページへ遷移させるというフローの関係で、
ここでもformタグを使います。

check.phpの一番上に以下PHPを記述

その他check.phpに記述するPHPはたったこれだけ。

if(!$_POST){
header('Location: ./mail.php');//	headerlocationはPHPのリダイレクト処理でよく使う。
	}
//Sessionを開始するときの決まり文句、これがないとSessionが開始できない
session_start();
$_SESSION = $_POST;//Postされた情報を$_SESSIONに代入します
if(!$_POST){} で、不正アクセス防止!

このページは、前ページのmail.phpから、submitボタンを押して初めて表示されるページ。と、いうことはいきなりこのページに物理的にアクセスするとは考えずらいですね。
何らかの形でいきなりこのページにアクセスしてきたケースは、前ページにリダイレクトさせる必要があります。
これが最低限 悪さをされないための処理です。

session_start()を忘れないで!

このプログラムは、最後の送信ページまでデータを引き継がなければなりません。
Sessionを使うんでしたね。Sessionを使うときは、Sessionを使う前に

session_start

を使って、宣言します。これがないと、Sessionを使うことが出来ません。そして最後に

$_SESSION = $_POST;

Postされた情報を$_SESSIONに代入する処理をして、確認ページはおしまいです!

では、最後にもう一度送信ページをおさらいしておしまいになります。

ページ: 1 2 3 4 5 6 7