• ベストアンサー

Webサイトをリロードさせない

こんにちは。 早速ですが、下記サイトを参考にしながらアンケートフォームを作成しているのですが、 http://www.ken3.org/cgi-bin/test/test016-1.asp このフォームだと、リロードする度に数字が増えて行くのでリロードさせないようにする事は可能でしょうか?(もしくは一定時間リロード出来ない) 初心者ですが、宜しくお願いします。

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

  • ベストアンサー
  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

リロードさせないのは不可能だよ。 ただしリロード対策をする事はできるね。 主にセッションやcookieなんかが代表的にリロード対策で使われるね。 http://www.google.co.jp/search?q=%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89%E5%AF%BE%E7%AD%96&hl=ja&lr=lang_ja

momokocyan
質問者

補足

SAYKA様 いつもありがとうございます。 リロード対策をいろいろと見てみたのですが、情けない事に上記アドレスのソースに対してどう処理して良いかわかりませんでした。 申し訳ございませんが、もう少しお力をお貸し下さいませ。 宜しくお願い致します。

その他の回答 (2)

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.3

教えたいのは山々ですが、今回は別のコードを探すことをお勧めします。 今回は ・投稿後に「投稿しましたキー」を埋め込む処理を配置。 ・投稿前に「投稿しましたキー」がないことを確認する処理を配置。  (再投稿を禁止する時間が、キーの有効期限と一致します) による簡易設計を元に改変となります。 ブラウザリロード阻止のためには、今回はクッキーを利用するのですが、確かレガシーASPはファイルをパースすると同時にHTMLを標準出力に出していった記憶があります。 つまり、クッキー処理のためには、今回のコードを初心者では難しい改変が迫られます。(クライアントコードjscript等を混ぜるならokだが)。 このコードは、拡張性に乏しいコード設計になっています。 ※ HTML表示とデータ処理を同一処理にしてしまうと、このような弊害が多々発生します。 おそらく、これはただのサンプルだからです。 ここで書き始めると、コードの変更箇所がたくさんになってしまい、原型をとどめないと思いますよ。 質問者様の書いた > ******* = Request.QueryString("******") は、 data = Request.QueryString("a") If Len(data) <> 0 Then 'データあり Response.Cookies("test016.asp").Expires = DateAdd("s", 1, Now) End If のつもりかと思います。 クッキー処理のためにはたぶん文頭に書かないといけませんが、 これは集計処理より前になり、集計が失敗したときの対策がなされません。 ひとつを解決すると、ひとつの問題が出てくるという、典型的なサイロ型コードです。 できないことはないですが、申し訳ないのですが、今回は私は詳細なコードは控えさせていただきます。 ※ 別の人が書くと思いますよ。

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.2

ポスト後の再表示で再ポストされるということでしょうか? 簡易策: 1度ごとのポストに対して、ユニークなキーを発行します。 発行キーとポストを同時に格納するように処理をし、 すでに登録された発行キーのついたポストを処理しない、という設計になります。 この発行キーの保存場所を簡易的にクッキーやセッションにしてしまうのが、下記のやり方です。 また、もう一つのやり方ですが、一度ポストをしたのちに、表示ページにリダイレクトさせるようにしてください。そうすれば、多重ポストは起こりにくくなります。

momokocyan
質問者

補足

Xaval様 ご回答ありがとうございます。 とりあえず簡易策で下記のようなコードを見つけたのですが、うまくいきません。 <% ******* = Request.QueryString("******") 'データを代入 If Len(******) <> 0 Then 'データあり Response.Cookies("*****").Expires = DateAdd("s", 1, Now) End If %> 実際、「*****」の部分に何を入れて良いか分からない状態です。 わがまま言って申し訳ありませんが、もう少しお力をお貸し下さい。 宜しくお願いします。

関連するQ&A

専門家に質問してみよう