• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メールフォームとかで確認画面から書き直すのに戻ると)

メールフォームの確認画面から戻ると書いた文章が消えない理由は?

このQ&Aのポイント
  • メールフォームの確認画面から戻っても書いた文章が消えない理由について説明します。
  • メールフォームでの書き直し時に、戻っても文章が消えない仕組みについて解説します。
  • メールフォームのCGIとHTMLの仕様により、戻っても書いた文章が消えないようになっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

本来、元のページに戻るとそのページが動的に作成されているページで有効期限が0の場合は消えてしまうのが本来ですが、一部ブラウザ、あるいはアドオンの機能で入力内容を保持してくれる場合もありますが、それでも、基本は「消える」  そのため、確認ページの戻るボタンには<input type="hidden" name="message" value="・・・">で記載内容を含めておくべきです。そうすることでもいずれのボタンを押されても、その内容を使用して新たなページを作成できます。  その場合、記述がエラーの場合には値を消すと同時に、入力フォームに赤字などでエラー箇所を示すなり、入力エリアの背景色を変更するとよいでしょう。 <form action="formMail.cgi" method="post"> <input type="hidden" name="user" value="ほげ"> <input type="hidden" name="address" value="*****"> <input type="hidden" name="message" value="なんたらかんたら"> <input type="button" name="action" vale="戻る"> <input type="button" name="action" vale="送信"> </form>

takumana20
質問者

お礼

ご回答ありがとうございます。 HTMLのページに<form actionを付けて確認画面作って、CGIで送信しています。 アドオンは使っていないと思います。 <meta http-equiv="Cache-Control"を付けても消しても内容が保持されていたので、 不思議に思っていたのです。 <form action="※※.cgi" method="post"> <input type="hidden" name="message" value="内容"> formには、上記があれば、行き来しても内容が保持されているって事でしょうか。

その他の回答 (2)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

>formには、上記があれば、行き来しても内容が保持されているって事でしょうか。 そうですが、 >HTMLのページに<form actionを付けて確認画面作って、CGIで送信しています。 ここを見直す必要があります。 最初のフォーム自体をCGIから出力させます。  拡張子はhtmlであろうと何であろうとよいのですが、それがCGIである必要があります。  すなわち、何も入力なしてそれが呼ばれた場合は空白のフォームを生成し、入力があればそれを含んだフォームを生成させる。  この場合、フォーム、エラー指摘フォーム、確認画面、再入力フォーム、完了画面のすべてをひとつのCGIで行うほうが効率的です。なぜなら、同じ部分がたくさんあるから。

takumana20
質問者

お礼

ありがとうございました。

回答No.1

1.aaa.htmlのtextarea#aとtextarea#bにそれぞれ pppp と入力。別に入力内容は何でもいい。 2.Sendで送信するとaaaa.htmlに行く 3.「aaaa.htmlにあるリンクを踏んでbbbb.htmlに飛び bbbb.htmlにあるリンクを踏んでaaaa.htmlに飛び aaaa.htmlにあるリンクを踏んでbbbb.htmlに飛び …」を何回か繰り返します。 4.戻るボタンを連打してaaa.htmlに戻る →textarea#aの内容は残り、textarea#bのものだけ消えている。 …というような話が http://stackoverflow.com/questions/261351/browser-back-button-restores-empty-fields に書かれていて、こちらで検証を行い再現しました。 ==================aaa.html====================== <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Q5863255 TestCase 1</title> <script type="text/javascript"> //<![CDATA[ window.onload = function(e){ document.getElementById("b").appendChild(document.createElementNS("http://www.w3.org/1999/xhtml","textarea")); } //]]> </script> <style type="text/css"> #a{ background-color:red; } #b{ background-color:blue; } </style> </head> <body > <form action="aaaa.html" method="post" accept-charset="UTF-8" enctype="application/x-www-urlencoded"> <p id="a"> <textarea></textarea> </p> <p id="b"> </p> <button type="submit">Send</button> </form> </body> </html> =====================aaaa.html=================== <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Q5863255 TestCase 1</title> </head> <body> <p><a href="bbbb.html">XXX</a></p> </body> </html> ==================bbbb.html================== <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Q5863255 TestCase 1</title> </head> <body> <p><a href="aaaa.html">XXX</a></p> </body> </html>

takumana20
質問者

お礼

回答ありがとうございます。 何度も行き来すれば消えちゃうんですね。