メールフォーム実習7:送信ページ:リダイレクト
check.phpでsessionデータをつくる
【check.php】
<?php function h($str){ return htmlspecialchars($str,ENT_QUOTES,'utf-8'); } 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']; $success = true; $name_error= ''; $email_error= ''; $message_error= ''; if(strpos($email,'@')===false){ $email_error = '@マークがありません'; $success = false; } if(strlen($email)!=mb_strlen($email,'utf-8')){ $email_error = 'メールアドレスに全角文字が含まれています'; $success = false; } if(mb_strlen($name,'utf-8')>20){ $name_error = 'お名前が長すぎます'; $success = false; } if(mb_strlen($email,'utf-8')>25){ $email_error = 'メールアドレスが長すぎます'; $success = false; } if(mb_strlen($message,'utf-8')>150){ $message_error = 'お問い合わせ内容が長すぎます'; $success = false; } if(empty($name)){ $name_error = '名前が入力されていません'; $success = false; } if(empty($email)){ $email_error = 'メールアドレスが入力されていません'; $success = false; } if(empty($message)){ $message_error = 'お問い合わせ内容が入力されていません'; $success = false; } session_start(); $_SESSION['name']= $_POST['name']; $_SESSION['email']= $_POST['email']; $_SESSION['message']= $_POST['message']; $_SESSION['success']= $success; $_SESSION['name_error'] = $name_error; $_SESSION['email_error'] = $email_error; $_SESSION['message_error'] = $message_error; if(!$success){ header('Location:index.php'); exit; } ?> <!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 h($name); echo h($name_error); ?></td> </tr> <tr> <th>Eメール:</th><td><?php echo h($email); echo h($email_error); ?></td> </tr> <tr> <th>お問い合わせ:</th><td><?php echo nl2br(h($message)); echo h($message_error); ?></td> </tr> </table> <p><a href="index.php">戻る</a></p> <p><a href="send.php">送信</a></p> </body> </html>
ポイント
sessionデータをつくる
$_SESSION['success']= $success;
- 上部で$success = true;を宣言しているので、この記述をsessionデータに渡しています
send.phpでリダイレクトをかける
【send.php】
<?php session_start(); if(!$_SESSION['success']){ header('Location:index.php'); exit; } $name = $_SESSION['name']; $email = $_SESSION['email']; $message = $_SESSION['message']; mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail('XXX@XXX.XXX','お問い合わせメール',$name.$email.$message); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>無題</title> <link rel="stylesheet" href="css/style.css"> </head> <body>