前提・実現したいこと
お問い合わせフォームの確認画面にて、「戻る」ボタンを押したら入力時のページに戻る形にしたいと考えております。
発生している問題・エラーメッセージ
○○○.com/contactform.phpというページになり、何も表示されなくなります。
該当のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>お問い合わせフォーム</title> </head> <body> <div class="contact"> <a id="contact"> <h2>contact.</h2></a><hr> <form action="./contactform.php" method="post"> 名前 <input type="text" name="fullname" value="" class="form-control"><br> Eメール <input type="email" name="email" value="" class="form-control"><br> お問い合わせ内容<br> <textarea cols="40" rows="8" name="message" class="form-control"></textarea><br> <div class="button"> <input type="submit" name="confirm" value="確認" class="btn btn-primary btn-lg"/> </div> </form> </body> </html>
PHP
1<?php 2 session_start(); 3 $mode = 'input'; 4 $errmessage = array(); 5 if( isset($_POST['back']) && $_POST['back'] ){ 6 // 何もしない 7 } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ 8 // 確認画面 9 if( !$_POST['fullname'] ) { 10 $errmessage[] = "名前を入力してください"; 11 } else if( mb_strlen($_POST['fullname']) > 100 ){ 12 $errmessage[] = "名前は100文字以内にしてください"; 13 } 14 $_SESSION['fullname'] = htmlspecialchars($_POST['fullname'], ENT_QUOTES); 15 16 if( !$_POST['email'] ) { 17 $errmessage[] = "Eメールを入力してください"; 18 } else if( mb_strlen($_POST['email']) > 200 ){ 19 $errmessage[] = "Eメールは200文字以内にしてください"; 20 } else if( !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ){ 21 $errmessage[] = "メールアドレスが不正です"; 22 } 23 $_SESSION['email'] = htmlspecialchars($_POST['email'], ENT_QUOTES); 24 25 if( !$_POST['message'] ){ 26 $errmessage[] = "お問い合わせ内容を入力してください"; 27 } else if( mb_strlen($_POST['message']) > 500 ){ 28 $errmessage[] = "お問い合わせ内容は500文字以内にしてください"; 29 } 30 $_SESSION['message'] = htmlspecialchars($_POST['message'], ENT_QUOTES); 31 32 if( $errmessage ){ 33 $mode = 'input'; 34 } else { 35 $mode = 'confirm'; 36 } 37 } else if( isset($_POST['send']) && $_POST['send'] ){ 38 // 送信ボタンを押したとき 39 $message = "お問い合わせを受け付けました \r\n" 40 . "名前: " . $_SESSION['fullname'] . "\r\n" 41 . "email: " . $_SESSION['email'] . "\r\n" 42 . "お問い合わせ内容:\r\n" 43 . preg_replace("/\r\n|\r|\n/", "\r\n", $_SESSION['message']); 44 mail($_SESSION['email'],'お問い合わせありがとうございます',$message); 45 mail('mikeikeikename@yahoo.co.jp','お問い合わせありがとうございます',$message); 46 $_SESSION = array(); 47 $mode = 'send'; 48 } else { 49 $_SESSION['fullname'] = ""; 50 $_SESSION['email'] = ""; 51 $_SESSION['message'] = ""; 52 } 53?> 54<!DOCTYPE html> 55<html lang="ja"> 56<head> 57 <meta charset="utf-8"> 58 <title>お問い合わせ</title> 59 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> 60 <link href="https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c&family=Montserrat:ital,wght@1,300&family=Noto+Sans+JP:wght@300&family=Noto+Serif+JP:wght@200&family=Sawarabi+Mincho&display=swap" rel="stylesheet"> 61 <style> 62 body{ 63 padding: 10px; 64 max-width: 600px; 65 margin: 0px auto; 66 font-family: "M PLUS Rounded 1c", sans-serif; 67 } 68 div.button{ 69 text-align: center; 70 } 71 .top{ 72 margin-top:10px; 73 text-align:center; 74 background-color:#eee; 75 padding:20px; 76 border-radius:10px; 77 } 78 79 .kakunin{ 80 margin-top:10%; 81 margin-bottom:5%; 82 } 83 .kanryo{ 84 margin-top:20%; 85 text-align: center; 86 } 87 .kanryo p{ 88 margin:10px; 89 } 90 91 .btn{ 92 margin-left:10px; 93 } 94 95 </style> 96</head> 97<body> 98 <?php if( $mode == 'input' ){ ?> 99 <!-- 入力画面 --> 100 <?php 101 if( $errmessage ){ 102 echo '<div class="alert alert-danger" role="alert">'; 103 echo implode('<br>', $errmessage ); 104 echo '</div>'; 105 } 106 ?> 107 108 <?php } else if( $mode == 'confirm' ){ ?> 109 <!-- 確認画面 --> 110 <form action="./contactform.php" method="post"> 111 <div class="top"> 112 <h4>お問い合わせ内容のご確認をお願いします</h4> 113 </div> 114 <div class ="kakunin"> <p>お名前 <?php echo $_SESSION['fullname'] ?><br></p> 115 <p>Eメール <?php echo $_SESSION['email'] ?><br></p> 116 <p>お問い合わせ内容<br></p> 117 <?php echo nl2br($_SESSION['message']) ?><br></div> 118 <input type="submit" name="back" value="戻る" class="btn btn-primary btn-lg" action ='./index.html'/> 119 <input type="submit" name="send" value="送信" class="btn btn-primary btn-lg"/> 120 </form> 121 <?php } else { ?> 122 <!-- 完了画面 --> 123 <div class ="kanryo"> 124 <h2>送信が完了致しました。</h2><br> 125 この度はお問い合わせ頂き誠にありがとうございました。<br> 126 ご返信まで今しばらくお待ちくださいませ。 127 </div> 128 <?php } ?> 129</body> 130</html>
試したこと
contactform.phpファイルの121行目、
<input type="submit" name="back" value="戻る" class="btn btn-primary btn-lg">
に action ='./index.html'/を加えましたが適用できず。
あくまで予想ですが、
if( isset($_POST['back']) && $_POST['back'] ){
// 何もしない
この部分に戻る仕様を付け加えるか、などと考えていますが書き方がわからず。
お手数ですがご指導宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/13 01:04