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

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

メールフォームとかで確認画面から書き直すのに戻ると

メールフォームとかで確認画面から書き直すのに戻ると 書いた文章が全部消えるとか聞きましたが、戻っても消えません。 確か、前にどこかのフォームでFIREFOXで書いて戻ったら消えちゃった事があって・・・ 何が正しいのでしょうか? HTMLにformでCGIに送る仕様です。 いえ、残ってくれた方が良いと思うのですが、 消えるか消えないか試してみただけですが。 <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> ブラウザの上の戻るボタンでも、ジャバスクリプトのボタンで戻っても消えません。

  • HTML
  • 回答数3
  • ありがとう数14

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

  • ベストアンサー
  • 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
質問者

お礼

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

関連するQ&A

  • MACのsafariでCGIを動作した場合、リロードボタンを押さないと更新されません。教えて下さい。

    MACのsafariでCGIを動作した場合、リロードボタンを押さないと更新されません。教えて下さい。 今perlを使ってスケジュール管理を作っていますが、IEでは、ちゃんと動作します。HTMLに <HEAD> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> </HEAD> と記述し、キャッシュを無効にしてみたのですが、 どうしてもsafariだと新規でスケジュールを入力したものがカレンダーに反映されません。 これは、HTML記述では、キャッシュを無効に できないのでしょうか? 教えて下さい。

    • ベストアンサー
    • Perl
  • HTMLの画像自動更新について

    現在、 <meta http-equiv="Refresh" content="5">で自動更新をしているのですが、 毎回同じ画像が表示されてしまいます。 F5を押すと画像は更新されます。 キャッシュに問題があるのではと調べて下記のように書きました。 <HTML> <HEAD> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Pragma" content="no-cache"> <meta equiv="Expires" content="-1"> <meta http-equiv="Refresh" content="5;URL=index_i_i.html"> URLの「index_i_i.html」は同じHTMLファイル(名前は変えて)を用意して交互に飛ぶように設定しました。 ですが、上記の記述でも同じ画像が表示されます。 F5では更新されるのですが、F5と同じ更新をHTML内に記述するにはどうしたらよろしいのでしょうか? できれば、CGIやスクリプトは使いたくないのですが、使わなくてはいけないのであれば、教えてください。 お願いします。

    • ベストアンサー
    • HTML
  • ブラウザの戻るができないようにしたい

    ページ内はHTMLファイルですが、そのページのiframe内にperlで動的ページを表示させています。 クリック自体はifream内の動的ページですが、ページのキャッシュが残っているらしく、ブラウザの戻るが有効になります。 戻るができないようにしたいのですが何か良い方法はありますか? 以下、効果はありませんでした。 ファイル1 test.html <html> <head> <title>HTML</title> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Fri, 31 Dec 2004 23:59:59 GMT"> </head> <body> <ifream src="test.cgi"></ifream> </body> </html> ファイル2 test.cgi print "Content-type: text/html\n"; print "Pragma: no-cache\n"; print "Cache-Control: no-cache\n"; print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n"; print <<EOT; <html> <head> <title>CGI</title> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Fri, 31 Dec 2004 23:59:59 GMT"> </head> <body> <a href="test.cgi">sample</a> </body> </html> EOT exit;

    • ベストアンサー
    • Perl
  • URL指定のないHTTP-EQUIV="Refresh"

    稀に以下の様なページが出る事があるのですが、 これはどういう原因で起こるのでしょうか? <HTML> <HEAD> <META HTTP-EQUIV="Refresh" CONTENT="0.1"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1"> </HEAD> </HTML> 0.1秒毎にキャッシュ消しながらリフレッシュ、という意味だと思うのですが、サーバー攻撃みたいな事になっていて困っています。

  • 画像をキャッシュさせたくない

    CGIで動的に画像を表示するため表示した画像をキャッシュさせたくないのですが、どうすればいいのでしょうか。 他のページなどを参考に <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> をヘッダーに入れてみましたし、リダイレクトしたURLの後ろに無意味なランダム数字を入れても見ましたが、やはりキャッシュされています。 たとえキャッシュされていても無視して読み込むようなヘッダーとか何か確実に新たに読み込む方法はないでしょうか。

    • ベストアンサー
    • HTML
  • フォームの確認画面について

    お世話になります。 現在アンケートフォームを作成し、そのデータをtxtファイルに保存するというプログラムを作成しました。そこでフォームに入力された確認画面を表示させ、確認画面で送信ボタンを押すと、データが蓄積されるプログラムに変えたいと思ってます。 今現在はフォームはhtml cgiはperlで作成してます。 実際にどのようにすればいいかが分かりません。 フォーム(html)→確認用フォーム(cgi)→蓄積用cgiという流れでいいのでしょうか? また、確認用のフォームには戻るボタンを作りたいのですが、戻った時に、入力したデータは保持しときたいのですが。 よろしくお願いいたします。 データ蓄積用cgiプログラム #! /usr/bin/perl require './cgi-lib.pl'; $answer = 31; $ansfile = "/tesuto.txt"; &ReadParse(*in); $name = "てすと"; for($n = 1; $n <= $answer; $n++ ) { $no[$n] = $in{"no$n"}; } open (FILE,">>$ansfile"); flock (FILE,2); print (FILE "\"", $name); for($i = 1; $i <= $answer; $i++ ) { $no[$i] =~ s/\"/""/g; print FILE "\"\,\""; print FILE $no[$i]; } print FILE "\"\n"; flock(FILE,8); close(FILE); print "Content-type: text/plain\n\n"; print "<HTML><BODY>\n"; print "<META http-equiv=\"refresh\" content=\"0;URL=http://○○○.html\">\n"; print "</body></HTML>"; exit;

    • ベストアンサー
    • CGI
  • SSL環境でオートコンプリートを有効にする方法

    はじめまして。 現在、SSL環境でInternet Exploerのオートコンプリートが有効にならずに困っています。 元々のプログラムに対して、下記の対応を行いましたが有効になりませんでした。 ・スクリプトによるフォームのサブミットではなく、HTMLのサブミットに変更 ・HTML内のMETAタグ、<META http-equiv="Pragma" content="no-cache">をコメントアウト http環境では有効になります。 原因がわからず困っています。 ご存知の方がいらっしゃいましたらご教示ください。 以上です。よろしくお願い致します。

  • このMETAタグまちがっていますか?

    サーチエンジンで 減量を引っかけたいときには下記であってますか? あるサイトからもってきたのですが 特に <META content=index,follow name=robots> というのがよく意味がわかりませんでした <META http-equiv=keywords content=減量> <META http-equiv=abstract content=減量> <META content=減量 name=description> <META content=index,follow name=robots> <META http-equiv="content-type" content="text/html; charset=Shift_JIS"> <META http-equiv=content-script-type content=text/javascript> <META http-equiv="content-style-type" content="text/css"> <META http-equiv=pragma content=no-cache> <META http-equiv=cache-control content=no-cache>

    • ベストアンサー
    • HTML
  • このタグがいつからブラウザに採用されたのか

    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">  ↑たとえば、このようなタグがありますが、こういう   書き方は IE, ネスケ など、いつのバージョンから   採用されたのか、とかわかる方法はないでしょうか。

    • ベストアンサー
    • HTML
  • 動画配信サイトで動画を閲覧するとキャッシュが残りますよね?(サイトによ

    動画配信サイトで動画を閲覧するとキャッシュが残りますよね?(サイトによっては) キャッシュってブラウザやOSの仕様だそうですが、キャッシュが残らないように配信ってできないのでしょうか? <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT"> こういうようなタグ(?)を付ければ完全ではないにしろ抑制できますよね? これができれば、プログレッシブダウンロードの仕組みで専用サーバを使うストリーミング配信のようなことが出来るのでは?? 何をとんちんかんなことをいってるんだと思われるかもしれませんが・・・回答よろしくお願いします。

専門家に質問してみよう