プロが教えるわが家の防犯対策術!

フォーム送信後、入力値を間違えたので戻ろうとすると、入力フォームの値が消えてしまっています。

入力値が保持されているサイトと消えてしまうサイトとあるようなのですが、

これはどこで制御されているのでしょうか?コード?サーバ設定?よろしければ教えてください。

よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

>サーバにポストされたデータを再びCGIに


>埋め込み直すというような感じでしょうか。
そうですね。そんな感じです。

>するとフォーム画面は.htmlファイルでなく
>.cgiファイルでしょうか?
これは、ちょっと違います。
サーバー上では、プログラムが動きます。
拡張子はそれぞれだいたい決っていて、
.php .asp .jsp などもあります。
.cgiは、perlのプログラムであったり、
シェルプログラムであったり、または
c言語で作成されたものであったりと、
いろいろです。

「戻る」を押したときは、サーバー上のプロフラムが、
(1)戻るを想定して表示している
(2)たまたま、表示されている
のどちらかです。

よって、うまくいったり行かなかったりします。

まずは、ブラウザーとサーバーの関係を
勉強してみると良いと思います。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

> (1)戻るを想定して表示している
> (2)たまたま、表示されている

サイトによっては、完全に入力値を戻す仕様になっていたりしますが、やはりプログラムを通してやっているのですね。

> まずは、ブラウザーとサーバーの関係を
> 勉強してみると良いと思います。

どこで調べると一番いいのか分からないので、進んでいません。やりたいのですが。

お礼日時:2003/09/09 09:12

回答をまっておられていると、


申し訳無いので、
ここで、ひとつサイトの紹介をします。

『ITNAVI.com』です。
ここは、IT技術のリンク集といった感じで、
いろいろな技術のサイトをコメント付きで
紹介しています。

いちどご覧になってはいかかですか。

参考になれば嬉しいです。

参考URL:http://www.itnavi.com/guide.asp
    • good
    • 0

タグ、パラメータってことですが、


フォームはこんな感じです。
<html><body>
<form name="myform" action="test.cgi" method="POST">
<input type="text" name="id">aaaa</input>
<input type="submit" name="送信">
</form>
</body></html>

プログラムでは、id=aaaa の言う部分を覚えていて、
HTMLを表示するときに設定しています。
混乱してしまったら、また聞いてください。

参考URL:http://www.aux-web.com/webbox/support/form_02.html
    • good
    • 1
この回答へのお礼

何度もありがとうございます。
サーバにポストされたデータを再びCGIに埋め込み直すというような感じでしょうか。するとフォーム画面は.htmlファイルでなく.cgiファイルでしょうか?

通常フォーム入力は.htmlファイルですし、ブラウザの戻るでは上手く動かないような気もします。スミマセンちょっと混乱しています。

お礼日時:2003/09/05 14:59

これ、普通は消えます。



パスワードだけ消えている経験とかないですか?
あれは、プログラムでわざと制御しています。

教えてgooは、PHPで作成されているので、
サーバーで動いているプログラムが、
フォームに入力した値を覚えていてくれて
います。
(IEのアドレスのところを見ると、
http://oshiete1.goo.ne.jp/kotaeru_reply.php3

なので、普通のHTMLで記述されたページは、
書きこむ→戻る→進む なんてすると、
内容は消えます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
もしよろしければどういったタグなのか、パラメータなのか、等教えて頂けないでしょうか?くわしく調べてみたいのですが、手がかりがなく困っています。

よろしくお願いします。

お礼日時:2003/09/05 10:41

こんにちは



ブラウザの[戻る]でフォームの設定を保持しているか否かはブラウザの出来不出来の様です。
保持されているときもあれば、空になってしまうときもあります。

これをさけるためには、データを保持した状態の入力フォームに移動出来るような戻るボタンをページ上に設置し、CGI等でデータを移行してあげる事が望ましいと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
新しいブラウザを使用していると大丈夫だと思っていましたが、サイトによって空になってしまうようです。

ブラウザとサイトの相性等があるのでしょうかね。

お礼日時:2003/09/02 11:02

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJava-jspの画面入力値保持について

画面にテキスト、ラジオボタン、リストボックス とボタンがあります。
ボタンを押すと、JAVAで処理を行い、jspのviewで表示します。

1.テキスト、ラジオボタン、リストボックスなどに値が入力、設定されている状態で
ボタンを押して処理後にテキスト、ラジオボタン、リストボックスの値が
変わらないようにしたいのですが、
その場合、たとえば、入力、設定値をセッションになどに格納しておき
jspの所で、セッションから値を設定すると言うような方法になるのでしょうか?

2.ボタン押して処理後、ラジオボタン、リストボックスの選択値も
  変えないようにしたいのですが、
  これはどのように実現するのが、適切なのでしょうか?


以上、よろしくお願いします。

Aベストアンサー

ボタンというのはフォームのサブミットボタンのことですよ?
つまり、画面遷移が起きることを前提とすると(元の同じ画面に戻るのも含みます)

テキスト、ラジオボタン、リストボックスの状態を「要求パラメータ」として
送信し、それを次画面に反映するというのが最も一般的な方法です。

フレームワーク struts のアクションフォーム&JSPカスタムタグを使うと比較的楽に
そういう画面が作れますが、多くのフレームワークでも大差ありません。
簡単な画面なら素のサーブレート+JSPでも十分作れます。

セッションでもできますが、 セッションはログイン情報などの保持など、
限定された範囲で使うのが普通です。また、結局セッションに最新の
テキスト、ラジオボタン、リストボックスの状態を送るには、「要求パラメータ」
を送信する必要があります。

AJAXを使うという方法もあります。この場合、ボタンは AJAX 処理だけを行い
画面遷移を起こさないので、サーバ側で画面のテキスト、ラジオボタン、
リストボックスの状態をもつ必要はありません。

Qページ移動した場合の、フォームデータの保持

PHP初心者です。

私が作っているPHPのシステムで、ユーザーがフォームデータ入力途中に、他のページに移動すると、「戻る」ボタンなどですぐに戻ってきても、入力したフォームデータが消えてしまいます。

例えば、この「教えてgoo」の「新しい質問をする」のフォームはPHPで生成されていますが、

http://oshiete1.goo.ne.jp/oshiete_new.php3?c=256

途中でちょっと他のページに行っても、(すぐ戻れば?)入力したデータは保持されますよね。

こんなふうにしたいのですが、どうすればよいでしょうか?
「戻る」ボタンで戻ったときに、サーバーから毎回新しいXHTMLをロードしてくるので、入力データがクリアされてしまうのでしょうか?

フォーム入力⇒確認画面⇒「戻る」ボタンで戻るとフォームデータが保持されないということではなく、あくまでフォーム入力中に、ちょっと他のページに行って戻ってくるという設定です。

よろしくお願いします。

Aベストアンサー

原因はセッション関連にありそうですね。
session_cache_limiter()
というのは指定されていますか?
恐らく現状はnocache(ページ内容をキャッシュしない状態)になっているのだと思います。

もし
session_cache_limiter('nocache');
となっていれば、publicもしくはprivateへ変更してみて下さい。
ないようでしたら、session_start()の前に
session_cache_limiter('public');
session_cache_limiter('private');
のどちらかを記述してみて下さい。
publicだと、クライアントマシン、プロキシのどちらもキャッシュを保持しますが、
privateだとクライアントマシンのみキャッシュを保持します。
どちらが良いのかは使い方によると思いますし、
nocacheでないと困る時もありますから。

session_startを削除してしまって良いかどうかは、
他の部分の処理との関連が分からないので何とも言えないです。

一度試してみて下さい。

参考URL:http://jp.php.net/session_cache_limiter

原因はセッション関連にありそうですね。
session_cache_limiter()
というのは指定されていますか?
恐らく現状はnocache(ページ内容をキャッシュしない状態)になっているのだと思います。

もし
session_cache_limiter('nocache');
となっていれば、publicもしくはprivateへ変更してみて下さい。
ないようでしたら、session_start()の前に
session_cache_limiter('public');
session_cache_limiter('private');
のどちらかを記述してみて下さい。
publicだと、クライアントマシン、プロキシのどち...続きを読む

Q戻ると、記入フォームの内容が消えるのはなぜ?

よくあるWEB上のアンケートフォームなどで、
記入したあとOKボタンを押し、「記入漏れがあります」と指摘されて、ブラウザのバックキーで戻ると(あるいは指定のボタンで戻ると)、記入した内容がすべて消えていて、またイチから入力し直し…ということがたまにあります。
これは一般的には、ユーザー側の問題なのでしょうか? サイト側の問題なのでしょうか?
詳しい方がいましたらどうぞ教えてください。m(_ _)m

Aベストアンサー

基本的にはユーザー側の問題だと思いますが、サイト側でキャッシュさせないようにすることは可能だと思います。
そもそも記入した内容が消えているというのは、記入した状態のページがキャッシュされておらず、再度ページが新規に読み込まれるという症状です。ということは、例えばユーザー側がキャッシュをオフにしたりしておくと、通常は消えてしまうということになります。
ただ、キャッシュが設定してあっても、何かのはずみに消えてしまうことは実際にあって、そのあたりは良く分かりません。100%消えないで戻れるように作ることは、サイト側ではできないと思います。
したがって、そういう必要があるサイトでは、Backボタンではなく「再編集」とか「前に戻る」とかいう機能を、ちゃんとボタンで設定してあるはずです。ここOKWebもそうですね。

Qページ間で変数を保持したい

いつもお世話になっております。

今回はhtml間での値渡しについてお聞きしたいです。

現在ある二つのページA,Bを作成していまして、お互いにリンクが張ってあります。
AからBに行く時、Aの中にあるフォームの内容をBに表示したく外部jsファイルでグローバル変数に保持したりなどやってみましたがだめでした。

そもそもこのようなことをjavascriptのみでできるのでしょうか?
また可能ならばどのようにすればよいでしょうか?
ご教授お願いします。

Aベストアンサー

<form action="fB.html" method="get">
とした場合の例ですが、

以下のコードを参考にしてみてください。
------------------------------------------------------------
fA.html
------------------------------------------------------------
<html>
<head>
</head>
<body>
<form action="fB.html" method="get">
<input type="text" name="t" value="textA"></input>
<input type="hidden" name="h" value="hiddenA">
<input type="submit">
</form>
</body>
</html>
------------------------------------------------------------
fB.html
------------------------------------------------------------
<html>
<head>
<script type="text/javascript">
<!--
function init() {
var arr=Array();

var ss = "";
var querys=location.search;
if(querys) {
var q = querys.replace(/^\?/,'').split('&');
for(i=0 ; i<q.length ; i++){
var pair=q[i].split('=');
// arr[pair[0]]=pair[1];
ss += pair[0] + " = " + pair[1] + "\n";
}
}
alert(ss);
}

window.onload= init;

//--></script>
</head>
<body>
</body>
</html>

<form action="fB.html" method="get">
とした場合の例ですが、

以下のコードを参考にしてみてください。
------------------------------------------------------------
fA.html
------------------------------------------------------------
<html>
<head>
</head>
<body>
<form action="fB.html" method="get">
<input type="text" name="t" value="textA"></input>
<input type="hidden" name="h" value="hiddenA">
<input type="submit">
</form>
</b...続きを読む

Q検索時の選択内容を保持する方法

質問失礼致します。

PHPで
・テキスト
・ラジオボタン
・チェックボックス
が複数入り混じった検索システムを作っています。

なんとか形になって検索の形はできたのですが、
必要な項目を検索し結果画面に映った際に
入力したテキスト・ラジオ・チェックボックスの内容が初期化されてしまいます。


検索した結果、テキストの方はインプット時に
<input type="text" name="name" size="50" value="<?= $_POST['name'] ?>" >
とすることで、結果画面にある検索システムの入力内容は保持できたのですが、

・ラジオ および ・チェックボックス の内容の保持を
なんとかまとめて設定することはできないでしょうか?


検索はしましたが、初心者なこともあり検索ワードがいまいち的を得てないのか、
考えている答えになかなかたどり着けておりませんので、
この場を借りて質問の方させていただいた次第でございます。


ご存じの方いらっしゃいましたら、是非ともご教授お願い致します。

Aベストアンサー

HTMLとプログラム部分の切り分けをするためにはなるべく単純な構造がよいでしょう
私の場合こんな処理をしています。
(実際の運用の際にはデータチェックをしたりするのでもう少し複雑になりますが)

<?
//checkbox
if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked";
if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked";

//radio
if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked";

//select
if(isset($_REQUEST["test_d"])) $selected["test_d"][$_REQUEST["test_d"]]=" selected";

print <<<eof
<form>
<input type="checkbox" name="test_a" value="1"{$checked["test_a"]}>A
<input type="checkbox" name="test_b" value="1"{$checked["test_b"]}>B
<input type="radio" name="test_c" value="1"{$checked["test_c"][1]}>C-1
<input type="radio" name="test_c" value="2"{$checked["test_c"][2]}>C-2
<input type="radio" name="test_c" value="3"{$checked["test_c"][3]}>C-3
<select name="test_d">
<option value="">---</option>
<option value="1"{$selected["test_d"][1]}>D-1</option>
<option value="2"{$selected["test_d"][2]}>D-2</option>
<option value="3"{$selected["test_d"][3]}>D-3</option>
</select>
<input type="submit" value="go">
</form>
eof;
?>

HTMLとプログラム部分の切り分けをするためにはなるべく単純な構造がよいでしょう
私の場合こんな処理をしています。
(実際の運用の際にはデータチェックをしたりするのでもう少し複雑になりますが)

<?
//checkbox
if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked";
if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked";

//radio
if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked";

//select
if(isset($_REQUEST["test_d"])) $selected["test_d"][$_...続きを読む

Q戻ると入力したフォームの内容が消えてしまう現象について

過去ログやあちこちのサイトで同様のトピックをたくさん読んだのですが、
私の知識不足もあり、汎用性の高い解決策が見つけられなかったので教えてください。

HTMLのヘッダーでキャッシュ制御などをしていないのに、
掲示板やフォームのCGIで、プレビュー画面に行き、
<input type=button value='前画面に戻る' onClick='history.back()'>
などのボタンで戻ると、時々ページがリロードされてしまい、
入力した内容が消えてしまうことがありますよね?
一説によればこの現象はブラウザ(特にIE)のご機嫌的なもののようで、
バージョンにはほとんど関係なく、ゆえに対応策を講じていない
掲示板やフォームが多いのかな?という印象を受けました。

これに対して、入力された値をどこかに一時的にキープしておき、
投稿画面に戻った時にそれを渡すような形で対応できている
超シンプルな掲示板やフォームのCGIはありますか?
(もしかしてクッキー処理というものでしょうか???)

プログラミング初心者の私ですが、ちょっと勉強してみたいので、
オススメの良いサンプルがありましたら、ぜひご紹介ください。
よろしくお願いいたします!

過去ログやあちこちのサイトで同様のトピックをたくさん読んだのですが、
私の知識不足もあり、汎用性の高い解決策が見つけられなかったので教えてください。

HTMLのヘッダーでキャッシュ制御などをしていないのに、
掲示板やフォームのCGIで、プレビュー画面に行き、
<input type=button value='前画面に戻る' onClick='history.back()'>
などのボタンで戻ると、時々ページがリロードされてしまい、
入力した内容が消えてしまうことがありますよね?
一説によればこの現象はブラウザ(特にIE)のご機嫌的...続きを読む

Aベストアンサー

確かに、「もどる」ボタンを押すと、入力した項目が消えてしまう事ってありますよね(^^;

こういう事が嫌なので、私もユーザーさんにガッカリしてほしくないと思い、入力をキープする事ができるCGIを使用しています。

http://apps.cside.com/
上記で配布されている「ThemeResMail」と言うのが、設定の仕方によって入力項目をキープする事ができます。
http://apps.cside.com/theme/tmresmail/

マニュアルを読むだけでも結構大変なのですが、ひょっとしたフォームであればできると思います。

結構高機能なCGIなので、このCGIで「何ができるのか」を一通り把握する事ができたら、良いものが作れますよ。
メールフォーム限定になってしまいますが。。。

私がみてきたメールフォームCGIの中では、このプログラムが一番高機能だと思います。
投稿内容もCSV形式で保存されるので、エクセルなどで分析する事もできますし。

それでは。。。

参考URL:http://apps.cside.com/

確かに、「もどる」ボタンを押すと、入力した項目が消えてしまう事ってありますよね(^^;

こういう事が嫌なので、私もユーザーさんにガッカリしてほしくないと思い、入力をキープする事ができるCGIを使用しています。

http://apps.cside.com/
上記で配布されている「ThemeResMail」と言うのが、設定の仕方によって入力項目をキープする事ができます。
http://apps.cside.com/theme/tmresmail/

マニュアルを読むだけでも結構大変なのですが、ひょっとしたフォームであればできると思います。

結構...続きを読む

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

QHTMLファイル同士での値渡し

困っています。

HTMLファイルからHTMLファイルへ移動するときに、
HTMLファイル1でJavaScript で算出された値を
HTMLファイル2へ渡して使用したいのです。

showModalDialogだとダイアログにしか渡せないし・・・。
このように、値をそのまま次のページに渡すための方法を教えてください。
お願いします。

Aベストアンサー

すみません。うっかりしてました。

document.write(FORM[v1]);
では、v1を変数と認識してしまうので、エラーになってしまいますね。

document.write(FORM.v1);  // 「FORM.v1」です
あるいは
document.write(FORM["v1"]);
としてください。

Qブラウザの戻るボタンを押したときのデータの保持の仕方

頻繁に書き込みして申し訳ありません。
どなたかお手すきでしたら、稚拙な質問にお付き合いお願い致します。


前回セレクトメニューについて教えて頂いたのですが、今回もセレクトメニューに関しての質問です。

IEでの話なのですが、セレクトメニュー1・2を選択しsubmitボタンで次のページに行き、
ブラウザの戻るボタンで戻ってきたときにセレクトメニュー2の方のデータ(value)だけ保持できていません。
前にIEはそのような仕様だという話を聞いたのですが、その時もこちらで質問させてもらいました。
その時はselectタグにidを仕込んでおき、「window.onload」でgetElementByIdを使用するやり方を
教わったのですが、今回はそれでうまくいきません。

ネットで検索していてcookieを使用してデータを保持しておくというやり方も見かけたのですが、
一番効率のよいやり方はどのようなものになるのでしょうか。

どうかよろしくお願いします。


以下ソースとなります。



<html>
<head>
<title>テストテスト</title>
<script language="JavaScript"><!--
menuItem = [ [ ],
["あああ","あああ2","あああ3","あああ4","あああ5"],
["いいい","いいい2"],
["ううう","ううう2","ううう3"],
["えええ","えええ2","えええ3","えええ4"] ];
function clearOption(len){
var i;
for (i=0; i<len; i++){
document.aaa.bbb.options[i] = null;
}
}

function setMenuItem(n){
optlen = document.aaa.bbb.options.length;
while(optlen > 0){
clearOption(optlen);
optlen = document.aaa.bbb.options.length;
}

if (menuItem[n].length > 0){
for (i=0; i<menuItem[n].length; i++){
document.aaa.bbb.options[i] = new Option(menuItem[n][i],menuItem[n][i]);
for( j=1; j<=4; j++ ){
if( document.aaa.Maker.selectedIndex == [j] ){
document.aaa.bbb.options[i].value = i+([j]*10);
}
}
}
}
}
window.onload = function(){
setMenuItem(document.getElementById('q1').value);
//alert(document.getElementById('q2').value);
}
// --></script>
</head>
<body>
<form name="aaa" action="./next.html" method="POST">
<select name="Maker" id="q1" onChange="setMenuItem(this.selectedIndex)">
<option value="" selected>--- 選択してください ---</option>
<option value="1">ひとつ</option>
<option value="2">ふたつ</option>
<option value="3">みっつ</option>
<option value="4">よっつ</option>
</select>
<select name="bbb" id="q2">
<option value="" selected>--- 選択してください ---</option>
</select>
<input type="submit" name="ok" vakue="ok">
</form>
</body>
</html>

頻繁に書き込みして申し訳ありません。
どなたかお手すきでしたら、稚拙な質問にお付き合いお願い致します。


前回セレクトメニューについて教えて頂いたのですが、今回もセレクトメニューに関しての質問です。

IEでの話なのですが、セレクトメニュー1・2を選択しsubmitボタンで次のページに行き、
ブラウザの戻るボタンで戻ってきたときにセレクトメニュー2の方のデータ(value)だけ保持できていません。
前にIEはそのような仕様だという話を聞いたのですが、その時もこちらで質問させてもらい...続きを読む

Aベストアンサー

ブラウザによって動作が変わってしまいそうな気がしますね。
検証はしてないですが。

どなたかが仰るように、クッキーで値を変えてあげると良いかも知れませんね。

cookieなんですが、この情報はjavascriptの方で取得してあげる必要があります。
javascriptでは、document.cookieでドメイン上のcookieが取得できると思うので、取得した後parserなどの関数を用意して必要な値を得る必要があると思います。

cookieの発行はsubmit後のページで、サーバーサイドから出してあげた方が良いと思います。

ただ、戻るの動作によってはページの表示自体がおかしくなりそうな気もしますね。

上手く動いたら教えてください!

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング