メールフォーム3

復習

sessionの利用
  • formがない =postでデータを受け取れない。
    →sessionを使用してデータを受け取る。
  • sessionはデータを最初にクリアするようにする。
    →$_SESSION=array();
  • session = post でpostのデータを代入する。
    →$_SESSION=$_POST;
文字化けの処理

mb_language() : mb_internal_encoding()を入力する。

<?php
mb_language("japanese");
mb_internal_encoding("UTF-8");

イレギュラーな処理

<?php
if(empty($_POST)){
	header('Location:mail_input.php');//thanks.phpに直接アクセスしてもメールが届かなくなる。
		exit;
}

確認画面で入力ミスを訂正する為に戻るボタンを追加する。

<a href="./mail_input.php">戻る</a>
  • 単純に戻るボタンを押すとせっかく入力した値がなくなってしまう。
    →sessionを利用して一時的に送ったデータを呼び戻す。

thanks.php

メールで送ったデータを削除する

mb_send_mail関数でメールを送った後にはsessionをクリアにしないとずっとデータが残っている

<?php
$_SESSION =array();
メールがきちんと送れたかの処理
<?php
if($r){
	$thanks ="お問い合わせありがとうございます。";
} else {
	$thanks ="送信エラーが発生しました";
}
    • 画面上に$thanksの中身のメッセージを表示する
<?php
function h($str){
	return htmlspecialchars($str,ENT_QUOTES,'utf-8');
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>thanks</title>
</head>
<body>
<h1>送信完了</h1>
<p><?php echo h($thanks) . "\n"; ?></p>
<a href="./mail_input.php">入力画面戻る</a>
</body>
</html>
  • htmlに出力する際に全てにhtmlspecialcharsをかけておくと後々楽になるので
    h($thanks)と入力する。

thanks.phpのURLを直接開いて、迷惑メールがどしどし飛んでこないようにする処理

    • 直接開くとメールが自動的に送れてしまう作り方なので、これは必須。
<?php
if(empty($_SESSION)){
	header('Location:mail_input.php');
	exit;
}
$_SESSION =array();
  • sessionがもし空ならば、input.phpに戻すという処理