• ベストアンサー

クリックを何回もされて、重複登録されるのを阻止する

Perlでプログラミングしています。 あるフォームがあって名前とか住所とかを入力し、登録ボタンを押すとPerlCGIに内容が送られて、それらをファイル保存するシステムなのですが、せっかちな人が登録ボタンを何回もクリックすると、ファイルに重複登録されます。 あるいは、登録完了という画面から、戻るボタンでフォームに戻って、再度登録ボタンをクリックしても重複登録されます。 これらの重複登録を阻止する方法はないでしょうか。

  • Perl
  • 回答数4
  • ありがとう数0

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

  • ベストアンサー
  • leap_day
  • ベストアンサー率60% (338/561)
回答No.3

#! c:/perl/bin/perl require './jcode.pl'; &decode; if($in{'mode'} eq "shori") { &shori; } &html; sub html { &header; print <<"EOM"; <form action="./test.cgi" method="post"> <input type="hidden" name="mode" value="shori"> 名前:<input type="text" size="8" name="name"><br> 住所:<input type="text" size="20" name="jusho"> <input type="submit" value="登録"> </form> EOM &footer; exit; } # ≪登録処理画面≫ sub shori { open(IN,"./test.dat"); @touroku=<IN>; close(IN); foreach(@touroku) { ($name,$jusho)=split(/<>/); if($in{'name'} eq "$name") { &error("二重投稿しています");} } open(OUT,">./test.dat"); print OUT ("$in{'name'}<>$in{'jusho'}\n"); print OUT @touroku; close(OUT); &header; print "登録が終了しました\n"; &footer; exit; } こんな感じですれば二重投稿の防止が出来ます (簡単に作ってるので後は改造してください(^^)w 一番先頭のperlの設定 &decord; →デコード部です &header; →ヘッダー部です &footer; →フッター部です &error →エラー部です open-fileのdie部 これらはsouta_nさんのスクリプトを使ってください

その他の回答 (3)

  • leap_day
  • ベストアンサー率60% (338/561)
回答No.4

追記 ≪登録処理画面≫6行目 if($in{'name'} eq "$name") { &error("二重投稿しています");} を if($in{'name'} eq "$name") { &html;} にすると二重投稿したときには登録処理画面に行かずに即座に登録画面に戻りますのでファイルに重書き込みすることはなくなります ・・・が登録者にとっては登録が出来たのか確認が取れないのであまりお勧めはできません(--;) 他の方法としては # ≪登録処理画面≫ sub shori { open(IN,"./test.dat"); @touroku=<IN>; close(IN); foreach(@touroku) { ($name,$jusho)=split(/<>/); if($in{'name'} ne "$name") { push(@touroku0,"$_"); } } open(OUT,">./test.dat"); print OUT ("$in{'name'}<>$in{'jusho'}\n"); print OUT @touroku0; close(OUT); &header; print "登録が終了しました\n"; &footer; exit; } とすることができます @touroku0 はなんでもいいです これだとファイルを見て同じ名前だったら省いてまた新たに書き込むという方法です

  • labilion
  • ベストアンサー率38% (43/111)
回答No.2

登録処理の前に重複チェックを入れてみてはいかがでしょうか? 送信されたデータの内容とファイルを比較して一致するデータがある場合 登録処理が行われないようにすれば、重複は防げると思います。 ボタン連打はjavascriptを使用して一度クリックされたらクリック無効にする処理を入れてあげたらある程度は防げると思います。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

100%というのは難しいのですが、99%阻止することはできるかな。。。 JavaScriptを使って、Click済み変数を用意しておいて、onClickでその変数に値を入れるようにする。 CGIから戻ってきたらその変数をクリアする。 のようにすれば良いのではないかと思います。 もしくは、フォーム送信データに時刻データも入れておいて、 データ登録時に「要求された時刻」を登録時の時刻と比較して、 システム的にあり得ない近似した時刻であれば、処理をしない とか。

souta_n
質問者

補足

お応えありがとうございます。 > JavaScriptを使って、Click済み変数を用意しておいて、onClickでその変数に値を入れるようにする。 出来ればそのJavaScriptかんたんなコーディング例など教えていただけないでしょうか。

関連するQ&A

  • ワンクリック詐欺かも。18歳以上ですか?をクリックしたら登録完了50000円と表示がでました。

    ワンクリック詐欺のようです。18歳ですか?をクリックすると突然何かダウンロードなのか転送なのか表示というか画像というかパッとでて消えたと思ったら次に登録完了\50000と表示がでていました。名前も住所も何も登録していないのに完了などできるのかな…と一瞬ボーっとした後すぐページを閉じてしまいました。住所など個人のことは登録していなくても請求などくるのでしょうか?特に気になるのは、ダウンロードだったのか何が起きたのかです。ファイルに何か残っているのでしょうか?どのように処理をしたらよいのでしょうか?教えてください。

  • ブラウザの戻るボタンで重複登録されるのを防ぐ方法

    WEBシステムを開発しています。 何らかのデータをDBに登録する際、WEB画面上の「登録ボタン」を押して登録します。 登録後、ブラウザの戻るボタンで登録前の画面に戻り、もう一度「登録ボタン」を押して、重複したデータが登録されることを防ぎたいのです。 簡単で手っ取り早い方法を、何かアドバイスいただけませんでしょうか?

    • 締切済み
    • PHP
  • 二重に登録されてしまう。

    こんにちわ。現在、商品を入力フォームから入力→確認→完了として それぞれ3つのファイルにわけ、DBに登録しているのですが、この完了画面の時に更新ボタンを押すと登録した商品がまた登録されてしまうのです(りんごと登録したあと完了画面で更新ボタンを押すとりんごがもうひとつ登録されている)この二重登録を防止する方法はないのでしょうか?ご回答をお待ちしております。

    • ベストアンサー
    • PHP
  • perlですが、良く会員登録するとメールが届いて

    perlで作られたサイトで会員登録するとメールが届き、その中にあるURLをクリックすると初めて登録完了となる、システムはどのようになっているのでしょうか。参考になる本、サイトはありますでしょうか。

    • ベストアンサー
    • Perl
  • ボタンをクリックしてファイルを開く

    Microsoft Visual Basic 2010 Expressを使ってプログラミングをし始めた初心者です。 Windowsフォームアプリケーションを作っているのですが、わからないことがありましたので質問します。 あるボタンを作り、そのボタンを押したときに特定のファイルをシステムで設定してある既定のプログラム(docxならWord、xlsxならexcelなど)で開くプログラムを作成したいです。 うまく説明できてないと思うので、下記が例です。 「Button1」を作ったとします。 そして、「Button1」をクリックしたときに、 例えばマイドキュメントの「A.docx」をWordで開くように設定するには どのようにクリックイベントのプログラムを作成すればよいのでしょうか? よろしくお願いします。

  • ホームページに会員登録機能を作成する方法

    ホームページに会員登録機能を作成する方法を教えて下さい。 具体的には、入力フォームに氏名や住所、メールアドレスを入力して、登録ボタンをクリックすると、登録完了画面が表示され、その画面に入力した個人情報とともに、会員番号が自動採番(例:登録順に0001から自動自動採番)されて表示される。 cgiのプログラムになるのでしょうか? テンプレートファイルがあれば紹介してください。

  • 筆王住所録作成したが新住所録が登録できない

    筆王の住所録を作成したが新住所録が登録できません。何回か、新住所録をつくりその後「変更を保存しますか」okボタンをクリックして保存完了と思い終了しましたが、新住所録が登録できませんでした。初心者に近いですから、よろしくお願いします。

  • 規約を読まずにクリックで登録

    旦那がアダルトサイトを徘徊中 規約を読まずに18歳以上と言うことで クリックしたら 「登録ありがとうございます。二日以内に4万近く払ってください」と、書いてあって 自分のIPやら接続時間やら書いてありました。 振込先も書いてあり、振り込む時には名前じゃなく 振り当てられた記号での振り込みをするようにかかれてました。 取り消しのボタンもなく問い合わせ先に時間とメアドがかかれてたのですが、取り消しの問い合わせした方がいいのでしょうか? 規約もちっちゃな枠によく読めば最後の方にクリックした時点で登録料が発生すると書いてありました。 登録完了というのはクリックだけで出来るものなんですか?不安で寝れません><

  • Access クリック 挙動 ダブルクリック?

    こんにちは。 Access勉強中の初心者です。 初歩的な質問になるかと思いますが、どうぞよろしくお願いいたします。 今、Accessでシステムを構築している最中ですが Accessの挙動がおかしくなったため、質問させていただきました。 現在の症状としましては 1.フォームにボタンを配置 2.ボタンにVBAコードでダイアログを表示 3.ダイアログでファイルを選択 4.『OK』ボタンにてファイルを確定・読み込み 5.読み込み完了 で動作しております。 当初は問題なく動作していたのですが 4のファイルを選択してボタン押下時、以前はシングルクリックだったのが 現在はダブルクリック(※)で動作する仕様になりました。 特におかしなコードはないと思うのですが 突然このように挙動が変わったりするのでしょうか。 ワンクリックで読み込みを開始したく思いますので 改善策があれば教えてくださいませ。 ※ ダブルクリックといいますか、 1.ファイルを選択 2.OKボタンクリック(1回では効果なし) 3.その後、クリックやキーボードで(何かしらアクションを起こすと)読み込みが開始されます。 1.ファイル選択 2.タブでOKボタンまで移動 3.エンター押下 だと1エンターで読み込みが開始されます。 乱文、失礼いたしました。

  • クリックで登録完了?

    噂には聞いたことがあったけど、遂にやってしまいました。 ワンクリック詐欺というのですか、どっかのエロサイトを見ていて クリックしたら、 勝手にファイルのダウンロードというものが表示されて、キャンセルボタンは無いし、 「×」をクリックしても消えず、ダウンロードが終了。 続いて『ご登録ありがとうございます。登録料4万8千円を振り込んでください』と 言う表示が出ました。 アナタの情報は登録しましたので、支払いが無い場合は云々という表示も出ました。 これに応じて支払うとどつぼにハマると聞きました。 このまま無視しても大丈夫でしょうか? 本当に私のデータが向こうに伝わっているのでしょうか?

専門家に質問してみよう