質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2326閲覧

お問い合わせフォーム 戻るボタンを押しても戻れない場合の対処法

mikeikeikename

総合スコア15

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/07/13 00:40

前提・実現したいこと

お問い合わせフォームの確認画面にて、「戻る」ボタンを押したら入力時のページに戻る形にしたいと考えております。

発生している問題・エラーメッセージ

○○○.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/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

submitに指定するのはactionではなくformaction
(戻るでサブミットするのは仕様としては微妙ですが)

投稿2020/07/13 00:56

yambejp

総合スコア116734

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikeikeikename

2020/07/13 01:04

解決しました!いつもありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問