戻るボタンでの再送信不要の方法 - PHPプロ!Q&A掲示板

652

  • 0P

戻るボタンでの再送信不要の方法

質問日時 / 2007年9月16日 19:21    回答数 / 7件

Questioner:  zamza  このエントリーをはてなブックマークに追加 

キーワード / キーワードが設定されていません

はじめまして。
これから検索ページを作ろうと思っているのですが、わからないことがあるので質問させてください。

フレームなしのページで、
画面上部で検索条件を入力し、検索ボタンの押下で
画面下部に検索条件に一致したデータを一覧表示します。
2度目以降の検索後にブラウザの[戻る]ボタンが押されると、「ページの有効期限切れ」になってしまいます。

現状の動作はこのようになります。
(1).画面の表示、検索条件の入力
(2).検索ボタンのクリック、SUBMIT(POST)
(3).一覧の表示
(4).検索条件の再入力*(1)とは別の条件
(5).検索ボタンのクリック、SUBMIT(POST)
(6).一覧の表示

(6)の一覧の表示後に[戻る]ボタンで(3)の一覧を表示したいのですが、「ページの有効期限切れ」になってしまいます。
これを「ページの有効期限切れ」にならずに表示したいのですが、その方法がわかりません。

(3)の一覧をGETで表示すればできるようになるように思うのですが、
これもどのようにすれば、そのような動作が可能になるかわかりません。

教えてください。どうかよろしくお願いします。

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01TorrySegallフォームからgetで送信すれば、スクリプト側は $_GET
┃┗A01-1zamza返信ありがとうございます。 GETで送信すればいい
┃ ┗A01-1-1TorrySegall確かに…GETで送れる総バイト数は、POSTに較べて遥かに
┃  ┗A01-1-1-1zamzaお返事ありがとうございます。 >それに200字もの検
┃   ┗A01-1-1-1-1TorrySegall誘導されたというか、私が勝手に突っ走ったというか^^
┗A02hmaru777POSTでの、ページの有効期限切れについては、 以
 ┗A02-1zamzaお返事ありがとうございます。 早速、教えていただ

回答一覧

並び替え:

A01
answererTorrySegall [9月16日 21:02]

フォームからgetで送信すれば、スクリプト側は $_GET でフォームデータを取れます。
HTML側の修正は、formタグのmethod属性値を get に変更するだけですよ。

一応の注意点としては
フォームメソッドがgetの場合、action属性URLにはgetパラメータを持たせられません。
(一般的なブラウザの挙動として、method="get" なフォームでは action属性値の "?" 以降を無効と見なしてしまうのです)
固定パラメータを利用したければ <input type="hidden"/> に持たせましょう。

この意見に回答する

ツリーへ TOPへ

A01-1
replyerzamza [9月16日 22:21]

返信ありがとうございます。

GETで送信すればいいとのことですが、GETの場合、
送信できるデータ量に制限があると聞いたのですが、
検索条件が複雑な場合やテキストボックスに大きな値を入力された場合も問題ないのでしょうか?
hidden項目に持たせれば問題ないのでしょうか?

この掲示板の上の検索ボックスもGETですね。
200文字以上入力して検索した場合、帰ってこないのですが・・・

とりあえずこれからGETにかえてテストしてみます。

この意見に回答する

ツリーへ TOPへ

A01-1-1
replyerTorrySegall [9月17日 23:25]

確かに…GETで送れる総バイト数は、POSTに較べて遥かに少ないです^^;
フォームから送ろうが アドレスバー入力・リンククリック で送ろうが、GETはGETですから…

ですが Google も Yahoo! も、その他諸々 検索メインのサイトは総じて検索フォームにGETを使ってます。
URLの転載といった再利用性に優れているというのが一番の理由でしょうが、
「検索時のリクエストは検索結果をゲットするためのものだから、GETメソッドを用いるべきである」
という議論も存在したりします、じつは。

それに200字もの検索条件文字列って
正直なところ考慮すべき現実味は、私には感じられないのですが…ごめんなさい。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1
replyerzamza [9月18日 22:11]

お返事ありがとうございます。

>それに200字もの検索条件文字列って
>正直なところ考慮すべき現実味は、私には感じられないのですが…ごめんなさい。 
すみません。確かに必要ありません。

>URLの転載といった再利用性に優れているというのが一番の理由でしょうが、
これもまったくそのとおりだと思います。

申し訳ありません、実は
http://ckworks.jp/comicdash/
↑のサイトのような検索画面を作りたかったのですが、実際自分で作ってみたところ戻るボタンで再送信のダイアログが出てしまいました。
上記のサイトではPOSTでSUBMITしているのにかかわらずダイアログが出ません。

どうすればこのような動作が可能になるのか知りたい

というのが質問の本来の意図です。違う方向へ誘導してしまい申し訳ありません。(GETにすることでも同様の動作は可能ということも知りませんでしたので。これも勉強になりました。)

上記のサイト以外にも同様の動作をしているサイトがあり、なにかスタンダードな方法があるのではないかと思い、質問した次第です。
POSTでSUBMIT後、戻るボタンでの再送信不要の方法。
おわかりになれば教えてください。どうかよろしくお願いします。

この意見に回答する

ツリーへ TOPへ

A01-1-1-1-1
replyerTorrySegall [9月19日 04:23]

誘導されたというか、私が勝手に突っ走ったというか^^;
ご紹介先のサイト、拝見しましたが…私もまだまだ勉強不足で見当がつきません…

私も後学のために知りたいと思いましたので、他の方の回答をzamzaさんと一緒に待ちたいと思います。

この意見に回答する

ツリーへ TOPへ

A02 満足
answererhmaru777 [9月19日 10:10]

POSTでの、ページの有効期限切れについては、
以前に回答があるので、ここの後半の部分を参照して下さい。

http://www.phppro.jp/qa/311

この意見に回答する

ツリーへ TOPへ

A02-1
replyerzamza [9月19日 20:47]

お返事ありがとうございます。

早速、教えていただいたログを読み、実装したところ、まさに望んでいたとおりの動作が可能となりました。

セッション、キャッシュと正直理解が追いついていませんが、疑問は解消できました。

それとろくに過去ログを調べもせず質問してしまい、すみませんでした。

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

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)