メールフォーム実習2:確認ページ
確認ページをつくる
check.phpを新規作成
【check.php】
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>お問い合わせ確認</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <h1>お問い合わせ確認</h1> </body> </html>
var_dumpでデータがcheck.phpに渡るか確認
【check.php】
<?php var_dump($_POST); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>お問い合わせ確認</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <h1>お問い合わせ確認</h1> </body> </html>
検証
【check.php:ブラウザ表示】
index.phpの値をcheck.phpに表示させる
- //var_dump($_POST);をコメントアウトにする
- ポストの値を変数に代入
- index.phpのtabel内容をコピー&ペースト
- thタグのlabel、tdタグの内容を消します
- phpの出力を入れる(htmlspesialcharsを忘れずに)
- お問い合わせのみhtmlspesialcharsの前にnl2br()を記述
- リダイレクトをかける
【check.php】
<?php if(!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['message'])){ header('Location:index.php'); exit; } //var_dump($_POST); $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>お問い合わせ確認</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <h1>お問い合わせ確認</h1> <table> <tr> <th>お名前:</th><td><?php echo htmlspecialchars($name,ENT_QUOTES,'utf-8'); ?></td> </tr> <tr> <th>Eメール:</th><td><?php echo htmlspecialchars($email,ENT_QUOTES,'utf-8'); ?></td> </tr> <tr> <th>お問い合わせ:</th><td><?php echo nl2br(htmlspecialchars($message,ENT_QUOTES,'utf-8')); ?></td> </tr> </table> </body> </html>
検証
- MAMPのApachとMySQLサーバーをスタート
- index.phpをブラウザで開き、アンカーリンクを各項目に、お問い合わせ内容に改行を入れて確認ボタンをクリック
- アンカーリンクではなく文字として表示、お問い合わせ内容が改行されていればOK
- アドレスバーのindex.phpの箇所をcheck.phpに変更してエンター、index.phpに自動的に変わればOK
【index.php:ブラウザ表示】
【check.php:ブラウザ表示】ポイント
var_dump();
- 引数に指定した式に関しての型や値を含む情報を表示
var_dump($_POST);
ポストの値を変数に代入
- フォームからポストというメソッドを使って値を送信
- $_POST['email'];は、index.phpのinputタグのname="email"に対応:データにラベリングしている
$name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message'];
htmlspecialchars()
- echoはタグもそのまま返してしまうため、アンカーリンクが生きてしまいます。これを文字に置き換えるために使用します
- ENT_QUOTES:シングルクォーテーションを認識させるように記述
- XXS=クロスサイトスクリプティング対策(悪意あるいたずら)
htmlspecialchars(変数,ENT_QUOTES,'utf-8');