[PHP]入力フォーム④
入力フォーム2−3 送信後に表示される画面
send.phpで送信後の内容を表示する画面を作成する。
①まずは、表示する器となるHTMLから。
【send.php】
<body>
<h1>メール送信画面</h1>
<p>以下の内容で送信されました。</p>
<table>
<tr><th>お名前:</th><td></td></tr>
<tr><th>メールアドレス:</th><td></td></tr>
<tr><th>お問い合わせ内容:</th><td></td></tr>
</table>
<p><a href="index.php">入力画面へ戻る</a></p>
</body>
②send.phpのtdタグ内に受け取ったデータを表示する。
その為にはcheck.phpからsend.phpへデータを送る必要があるが、POSTメソッドではなくSESSIONメソッドで行う。
POSTメソッドではデータが取り出されると消えてしまうため。
一方、SESSIONメソッドはサーバーに一時的にデータが保管されるので、何度でも取り出すことができる。
〔参考〕※一時的なデータの保管場所(XAMPPの場合)
C:¥xampp¥tmp¥ファイル名
というわけで、send.phpのtdタグ内に受け取ったデータを表示するには次の段階を踏む必要がある。
1)check.phpからSESSIONメソッドでデータを送信するためのコードを書く
2)send.phpでSESSIONをスタートさせ、SESSIONでの変数を受け取る
1)check.phpからSESSIONメソッドでデータを送信するためのコードを書く
session_start();
$SESSION['name'] = $_POST['name'];
$SESSION['email'] = $_POST['email'];
$SESSION['msg'] = $_POST['msg'];
2)send.phpでSESSIONをスタートさせ、SESSIONでの変数を受け取る
send.php head内
<?php
session_start();
$name = $_SESSION['name'];
$email = $_SESSION['email'];
$msg = $_SESSION['msg'];
?>
send.php body内
<table>
<tr><th>お名前:</th><td><?php echo htmlspecialchars($name,ENT_QUOTES, 'UTF-8');?> </td></tr>
<tr><th>メールアドレス:</th><td><?php echo htmlspecialchars($email,ENT_QUOTES, 'UTF-8');?></td></tr>
<tr><th>お問い合わせ内容:</th><td><?php echo htmlspecialchars($msg,ENT_QUOTES, 'UTF-8');?></td></tr>
</table>
ここまでにコードを ミスなく打てていれば、こうなります。
ここまでのファイルの内容
【index.php】
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>お問い合わせフォーム</title>
</head><body>
<h1>お問い合わせフォーム</h1>
<p>必要事項を入力して「確認する」ボタンをクリックしてください。</p>
<form action="check.php" method="post">
<table>
<tr><th><label for="name">お名前:</label></th><td><input type="text" name="name" id="name"></td></tr>
<tr><th><label for="email">メールアドレス:</label></th><td><input type="text" name="email" id="email"></td></tr>
<tr><th><label for="msg">お問い合わせ内容:</label></th><td><textarea name="msg" id="msg"></textarea></td></tr>
</table>
<p><input type="submit" value="確認する"></p>
</form>
</body>
</html>
【check.php】
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>入力確認画面</title>
<?php
if( !isset($_POST['name'])||!isset($_POST['email'])||!isset($_POST['msg']) ){
header('Location:./index.php');
exit;
}$name = $_POST['name'];
$email = $_POST['email'];
$msg = $_POST['msg'];session_start();
$_SESSION['name'] = $_POST['name'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['msg'] = $_POST['msg'];
?>
</head>
<body>
<h1>入力内容確認画面</h1>
<table>
<tr><th>お名前:</th><td><?php echo htmlspecialchars($name, ENT_QUOTES,'UTF-8'); ?></td></tr>
<tr><th>メールアドレス:</th><td><?php echo htmlspecialchars($email, ENT_QUOTES,'UTF-8'); ?></td></tr>
<tr><th>お問い合わせ内容:</th><td><?php echo htmlspecialchars($msg, ENT_QUOTES,'UTF-8'); ?></td></tr>
</table>
<p><a href="send.php">送信する</a></p>
</body>
</html>
【send.php】
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>メール送信画面</title>
<?php
session_start();
$name = $_SESSION['name'];
$email = $_SESSION['email'];
$msg = $_SESSION['msg'];
?>
</head>
<body>
<h1>メール送信画面</h1>
<p>以下の内容で送信しました。</p>
<table>
<tr><th>お名前:</th><td><?php echo htmlspecialchars($name,ENT_QUOTES, 'UTF-8');?> </td></tr>
<tr><th>メールアドレス:</th><td><?php echo htmlspecialchars($email,ENT_QUOTES, 'UTF-8');?></td></tr>
<tr><th>お問い合わせ内容:</th><td><?php echo htmlspecialchars($msg,ENT_QUOTES, 'UTF-8');?></td></tr>
</table>
<p><a href="index.php">入力画面へ戻る</a></p>
</body>
</html>