OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

2,3度連続して入る同データを1回分だけ有効

  • 困ってます
  • 質問No.183947
  • 閲覧数50
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 65% (27/41)

PerlでCGI(フォームに入力したデータをCSVに貯めています)を作っているのですが、送信フォームを2,3回クリックする人がいるので同じデータが入ってきてしまうので、制限をかけたいのです。
一定時間内に同じデータが入ってきたら1回しか有効化しないという制限を入れれば良いのでしょうが、記述の仕方がわかりません。

どなたかお知恵をお貸しください。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル12

ベストアンサー率 75% (398/526)

JavaScriptがオフの時の安全策、ということでしょうか?

# フォームページをCGIで出力する、という仮定ですが・・・

短時間に大量にアクセスされたりしないのなら、フォームページに hidden を設けて、これにフォームページ表示時の時間(timeの値)を埋め込んでみてはどうでしょうか。
で、CSVにもそのデータを入れておき、データを入れる際に同じ時刻のものがないかチェックする、という感じです。
CSVには時刻順になるようにデータを入れると、チェックも楽&軽くなります。

もし偶然の同時アクセスや、大量アクセスを心配するなら、時刻以外に $ENV{REMOTE_PORT} を入れてやると良いです。
この値は、クライアントごとにユニークになる(はず)ので、少なくとも時刻とダブルでチェックすれば、二重送信のチェックと、別クライアントからの同時送信をチェックできます。
お礼コメント
milktea_

お礼率 65% (27/41)

回答ありがとうございます。
CSVには、登録された時間もとっているので同じ時間がないのかチェックをしてあったらエラーを出すという命令をいれるのですね?

少し勉強が必要なようです。

ありがとうございました。
投稿日時 - 2001-12-13 15:09:13
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル11

ベストアンサー率 28% (122/425)

少し手間かも知れませんが、ここのサイトで使われてる「文章の重複チェック」を行って見られては如何ですか? 或いは、送信ボタン押下直後に一旦画面を送ってしまう方法も有りますが、 文章等の入力がある場合は、送信失敗の時にうっとしいと思いますね。 ...続きを読む
少し手間かも知れませんが、ここのサイトで使われてる「文章の重複チェック」を行って見られては如何ですか?

或いは、送信ボタン押下直後に一旦画面を送ってしまう方法も有りますが、
文章等の入力がある場合は、送信失敗の時にうっとしいと思いますね。
お礼コメント
milktea_

お礼率 65% (27/41)

お答えありがとうございます。
ここのサイトで使われてる「文章の重複チェック」というのはドコのことでしょうか?

手間はいといませんので、教えていただければ幸いです。
投稿日時 - 2001-12-13 15:04:30


  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

Javascript のカテゴリーでも質問をしているようですが、そちらの方で行う方が 安直にいけると思います。 CGI は、一回の要求毎にプロセスが起こされますから、基本的に「前回」を知ることが 難しいです。 Perl でやろうとするならば、Cookie に情報を残して、それをチェックするという ような感じになります。 ただ、何も考えないで実装してしまうと、一度に2~3回押したとき ...続きを読む
Javascript のカテゴリーでも質問をしているようですが、そちらの方で行う方が
安直にいけると思います。

CGI は、一回の要求毎にプロセスが起こされますから、基本的に「前回」を知ることが
難しいです。

Perl でやろうとするならば、Cookie に情報を残して、それをチェックするという
ような感じになります。

ただ、何も考えないで実装してしまうと、一度に2~3回押したときと、次の2回目が
う~んと後(例えば、次の日)の区別がつかなくなりますので、実装には注意が必要です。
補足コメント
milktea_

お礼率 65% (27/41)

ありがとうございます。

CSVでデータを貯めているのでそこに毎回見に行って同じなものがあったらエラーを出すと言う方法をとるということをしなければいけないと考えています。

JSの方で一度試してみます。
ありがとうございました。
投稿日時 - 2001-12-13 15:04:37
  • 回答No.4
レベル11

ベストアンサー率 28% (122/425)

>「文章の重複チェック」 文字列が、以前のデータと全く同じであれば、はじいてしまう方法です。 文字列が長いと、単純に全文比較をすると時間が掛かかったりしますので、検出方法を工夫しないと辛いかも...。 (例えば、文字列データのサムを作るとか...。) ...続きを読む
>「文章の重複チェック」
文字列が、以前のデータと全く同じであれば、はじいてしまう方法です。

文字列が長いと、単純に全文比較をすると時間が掛かかったりしますので、検出方法を工夫しないと辛いかも...。
(例えば、文字列データのサムを作るとか...。)
お礼コメント
milktea_

お礼率 65% (27/41)

ありがとうございます。
文字列の比較的短いところでチェックを取ってみます。
投稿日時 - 2001-12-19 17:23:01
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ