• ベストアンサー

二重投稿防止方法

Kizzの回答

  • ベストアンサー
  • Kizz
  • ベストアンサー率47% (30/63)
回答No.1

はじめまして、webmonkeyさん。 これは・・、    送信処理を行うphpページを表示(アドレスバーに入力)状態で、リドロー  (更新や再読込み、アドレスバー上でリターン)された場合  ※送信処理と完了アナウンスが同phpページに書かれている場合。 の解決という事であれば、2通り浮かびます。 案1)クッキー使用 案2)header()という関数を使用 案2の方が楽でかつ問題もないので、これをおススメします。 ・ページとしては3ページ用意   P1. 入力フォーム(送信ボタンおき)   P2. 送信実処理およびheader()文のみ※HTMLタグは一切かかずphpコードのみ   P3. 完了アナウンスページ ・header()の指定は、「header("Location: XX.phtml");」  ※XX.phtml にP3を指定。(htmlファイルでもいいですし、引数指定も可能) 補足)   header()を呼び出したページはhistory(履歴)情報に残らないという特徴があります。   その為、たとえブラウザで「戻る」指定されても、送信実処理ページはもどらず、   入力フォームに戻ります。   ※この対処方法は、ただ送信処理と完了アナウンスをページ分けしただけではありません。   ※入力フォーム上から再「送信」は、この対処方法では回避は無理です。    ちょっと本題からは外れた操作ですし。   注)header()呼出前に標準出力があると、header()はうまく動作しません。     <? ?>以外でHTMLタグ、ただの改行がはいっただけでも駄目なので注意して下さいね。 備考)  ・案1のクッキー使用では、ブラウザの戻るやリドローに関係なくクッキーは最新   の情報を保持しているため、1度送信処理したら、「もうこの送信処理はおわったよ」   と情報をクッキーに書いて、送信処理のphpコード部でこのクッキー値を参照し、   二重処理を行わないようにできます。   ※ただし、クッキーのクリアの確立とか色々面倒になると思うので、あまりおススメ    できないかな・・と。 他にも方法があるかもですが、参考までに。 頑張って下さい。

webmonkey
質問者

お礼

解答ありがとうございます。 参考になりました。 ご指摘とうり同一ページで作っていました。 案2)の方を利用して修正したいと思います。

関連するQ&A

  • 二重投稿防止処理

    PHPの掲示板を作成しています。 現在リロードや連続で送信ボタンを押された際の二重投稿防止処理を作っているのですが、どうしてもうまくいきません。 ログで最新に書かれた記事を呼び出し、送信されたデータと比較し、名前とコメントが一緒であれば二重投稿という扱いにするつもりなのですが、 改行があるとうまくいかないようなのです。 str_replaceを使って<br>タグを削除したり、 \r\nや\rを\nに統一させたり、 両方にtrimを使用してみたりしたのですが、 ソースを見るとフォームで送られてくるコメントのみ、どうしても改行されたままなんです。 これは一体何が原因なのでしょうか? どうしたら改行を含んだデータを比較することができますか?

    • ベストアンサー
    • PHP
  • このサイトの二重投稿防止の方法は?

    http://www.kirin.co.jp/active/env/mizunomegumi/click.html 上記のURLはキリンのクリック募金ページです。 このページのクリック募金の二重投稿を防止している方法について教えてください。 通常、アンケートなど二重投稿を防止するには、「IP」もしくは「クッキー」の二通りが思いつくのですが、下記のような理由からどちらの制御でもないようなのです。 ・初回クッキーの無効設定 → カウントされる ・クリック後にクッキーを削除 → 再カウントされない (クッキー制御ではない?) ・別のブラウザを変更 → カウントされる ・同一LAN内の別PCからアクセス → カウントされる (IP制御でもない?) また、クッキー削除後も「○回目のクリックありがとう」というようにこれまでのトータルクリック数が保存されているのも不思議です。 アンケートでの二重投稿防止などに利用したいのですが、これはどのような制御をしているのでしょうか。その方法もしくはヒントなどご教授いただけませんでしょうか。 他にも下記のサイトに同じようなシステムのリンクがあります。 http://www.dff.jp/(クリック募金サイト) 上記サイト内のコスモ石油・エイブルなど(IPBとカカクコムはクッキー制御のようです) よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 問い合わせ完了ページでの二重送信防止法

    過去の投稿で同内容のものがあることを確認はしたのですが、そこで書かれていた方法がうまく動作しなかった(二重送信されてしまった)ので、再度質問させてください。 問い合わせフォーム(inquire.html)にて、送信ボタン押下後、 「お問合せ受付完了」のページ(inquire_send.php)を表示する流れになっているのですが、この受付完了のページにてブラウザの更新ボタンを押下すると、 「情報を再送信しないとページを更新できません」 というダイアログが表示され、同内容のメールを送信してしまうことになります。 この、更新ボタン押下時の二重送信を防止したいのですが、以前の記事に書かれていた「header("Location: ××.php");」では、思い通りの動作になりませんでした。 他に何か方法がありましたら、教えていただきたいです。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • phpでの二重投稿防止について

    お世話になります。 php5にて二重投稿防止のスクリプトを考えておりますが、 なかなか良いものが浮かばず、検索でも見つけられないため質問します。 制作仕様としては、 1つのindex.phpの中に一言コメントを付けて送信するものなのですが、(twitterのような感じ) 更新ボタンを押すと「再送信~」というダイアログが出てしまいます。 別に確認ページや完了ページ等を設ければ、$_SESSIONやheader関数で解決するのですが、 どうしても同一ページ(index.php)内で全てを処理したいのです、何か方法があるのでしょうか? お手隙の方、ヒントをよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 二重投稿防止

    いつもお世話になっております。 現在PHPで開発を行なっております。 form タグに OnSubmit をつけて二重投稿を防止しようと思ったのですが OnSubmit をつけるとエラーチェックを通ってくれません。 簡易的なものでいいので、二重投稿を防止いたいと思います。 何かアドバイス等お願いいたします。 よろしくお願いいたします。 test.php ----------------------------------------- <? if ($_SERVER['REQUEST_METHOD'] == 'POST') {  // 確認画面へ  if ($_POST['cfm']) {   // エラーチェック  } } ?> <form name="form1" method="post" action="test.php enctype="multipart/form-data" OnSubmit="document.form1.cfm.disabled=true;return true;">  <input name="name" type="text" value="<?= $_POST['name'] ?>">  <input name="cfm" type="submit" value="確認画面へ"> </form> ----------------------------------------- <環境> PHP:5.2.5

    • 締切済み
    • PHP
  • onclickイベントでの二重送信防止に関して

    onclickイベントでフォームの二重送信の防止をしたいと考えています。 <input "type="submit">が一つしかないページでは、 <input "type="submit" onclick="this.disabled=true;this.value='送信中';this.form.submit();" value="送信"> でうまくいったのですが、 2つ以上あるページだと、クリックすると空白のページに飛んでしまい、フォームが送信できませんでした。 どのようにすれば、<input "type="submit">が2つ以上あるページでも、この方法で二重送信防止を作動させることができるでしょうか。 ご教授よろしくお願いいたします。

  • Perl 2重投稿の防止

    http://unimakura.jp/php/not-double-post.html このサイトはPHPとしての参考がかかれていますが、 このようなことを、Perlでしたいのですが、どう記述すればいいのでしょうか?? 完了画面での、フォーム再送信を禁止にしたいです。

    • ベストアンサー
    • Perl
  • 二重投稿

    学術分野ではいわゆる二重投稿が広く禁じられていますが, step1 同一内容の論文を異なる複数の学会誌に投稿する step2 複数の学会誌から掲載可の判定をもらう step3 1つの学会誌を選択肢し,残りの掲載を辞退する という行動は 二重投稿ではあるが,二重掲載とはならず, 投稿者の過大な評価につながることにはなりません. なぜ二重掲載ではなく,二重投稿が禁じられているのでしょうか? 査読者の負担を考えてのことでしょうか?

  • 重複投稿or投稿漏れの防止方法をお教えください

    時々投稿時にしてしまうチョンボとして、文面作成し投稿したのかどうか分からず、未投稿と思いダブってしまうケースがあります。 逆に、投稿文を確認する⇒投稿送信しない内に他のサイトや情報検索に移動してしまい、労作?が送信されず、登録保管もされていない為に消えてしまったケースもあります。 故意でなくても、重複連続の投稿は→失礼&ネチケットに反するとも思いますので、何か防止する方法があればお教え願えませんでしょうか?

  • disabledとcookieを併用する方法。

    phpで簡易なアンケートシステムを作っています。 2重投稿防止としてjavascritでもdisabledを使ってフォームボタンを押せないようにしようと思っています。 過去のFAQや参考サイトなどを調べるとdisabledを使う事はよく書かれているのですが、ここから更にcookieを使い一定時間制御できないかと思っています。 disabledとcookieを使った防止策などを解説しているサイトや参考スクリプトをご存知の方がいらしゃいましたら教えてください。 よろしくお願い致します。