3

ソリューションの編集:

なぜダブルエントリーをしているのかはまだわかりませんが、とりあえずハックしてみました。

フォームに UID トークンを追加し、MD5 を生成して DB エントリに保存しました。スクリプトは、エントリが既に存在するかどうかを確認するためにチェックを行います。存在する場合はエントリ ID を渡し、そうでない場合は新しい ID を追加し、最終確認メッセージの ID を渡します。

フォームは運良く​​UIDまで倍増していたので、それでキャッチできました。2 つの異なる UID だった場合、問題が発生した可能性があります (笑)。

他の誰かがこの質問を見つけた場合は、Post、Redirect、Get が優れたコーディング手法であることを他の人にも知ってもらいたいので、PeeHaa にポイントをお願いします。(挿入スクリプトに投稿し、ページから確認ページにリダイレクトし、GET を使用して表示する値を取得します)。

以前のコンテンツ:

OK、これはかなり基本的なことです。

ここですでに何億回も尋ねられていることは知っていますが、既存の質問はどれも私の問題に関係していません.

基本的な HTML フォーム。派手なjQueryなどはありません。

<form id="attendee_confirm" class="regform" method="post" action="http://url.com/wip/events/register/?">
<input name="attendee[0][first_name]" value="Bruce">  
<input name="attendee[0][last_name]" value="Wayne">


<input type="hidden" name="reg_form" value="true">
<input type="hidden" name="questions" value="true">
<input type="hidden" name="action" value="done_confirming">
<input type="hidden" name="event_id" value="1">

<input type="submit" name="mySubmit" id="mySubmit" value="Confirmed"> 
<input type="button" value=" &lt;-- BACK " onclick="history.go(-1);return false;">

</form>

フォームがデータを 2 回投稿するのはなぜですか?? 私は本当にこれを理解していません。

これは確認フォームです。ユーザーは最初のフォームに入力した後、名前を確認するためにここに移動します。

最初の形式は正常に機能し、適切な情報をもたらします。2 つ目は、メール/プロセスを確認して送信することになっています。

フォームは 2 回投稿されますが、2 回目の試行からの出力しか表示されません。最初のものから出力を取得できません。

このため、セッション トークンの「キャッチ」をフォームに追加して重複エントリをキャッチしようとすると、最初の試行は許可されますが、ユーザーには 2 番目のキャッチしか表示されません。

これはおそらくサーバーの問題ですか?私のサーバーは ModSecure を実行しており (最近これに腹を立てています)、本当にイライラしています。本来ならいけないのに、イベントで二重に占有されてしまう...

編集情報:

これはすべてのブラウザで発生するため、ブラウザ固有ではありません。

処理する情報を受け取った後にリダイレクトするようにキャプチャ スクリプトを設定することも試みましたが、前述したように、データは最初に目に見えないものによって送信されており、ユーザーに表示される出力は実際には 2 番目のデータです。最初のセットではありません。すべてがまだ2倍です。うわぁ..

サーバーログは壊れていました。それは1つの投稿で起こっています。2 回実行される可能性のあるスクリプトを再確認します.....

4

3 に答える 3

0

あなたの ACTION パラメータは少しファンキーに見えます。最後にクエスチョンマークがあるのはなぜですか?メソッドは POST ですが、ACTION url はメソッドが GET であることを示しています。

于 2012-09-06T15:49:14.047 に答える
0

なぜダブルエントリーをしているのかはまだわかりませんが、とりあえずハックしてみました。

フォームに UID トークンを追加し、MD5 を生成して DB エントリに保存しました。スクリプトは、エントリが既に存在するかどうかを確認するためにチェックを行います。存在する場合はエントリ ID を渡し、そうでない場合は新しい ID を追加し、最終確認メッセージの ID を渡します。

フォームは運良く​​UIDまで倍増していたので、それでキャッチできました。2 つの異なる UID だった場合、問題が発生した可能性があります (笑)。

他の誰かがこの質問を見つけた場合は、Post、Redirect、Get が優れたコーディング手法であることを他の人にも知ってもらいたいので、PeeHaa にポイントをお願いします。(挿入スクリプトに投稿し、ページから確認ページにリダイレクトし、GET を使用して表示する値を取得します)。

于 2012-09-07T13:15:53.193 に答える
0

私はこの問題を何度も発見しましたが、この問題は例外よりもルールであると感じています。私が間違っていると思われる場合は誰でも修正でき、これが html コードのエラーである理由を適切に説明できます。

于 2015-02-17T06:31:34.893 に答える