0

私はこの問題に取り組んできましたが、それは私を夢中にさせています!.

だから私は登録POSTフォームを持っています。送信すると、同じページにリダイレクトされますが、次のものがあります:

    if (isset($_POST['submit']))
{
  //include validation and executing code... (another page)
}

コードは完全に機能するようになりました。すべて問題ありませんが、問題が 1 つあります。

ユーザーが 2 回続けてクリックすると、同じ電子メールを持つユーザーが既に登録されているというメッセージが表示されます (最初のクリックでユーザーが登録され、データベースに情報が挿入されます)。

Onclick="this.RegisterBtn.disabled=1;"ここで、ボタンタグで : を使用してボタンを無効にしてみましonSubmit="this.RegisterBtn.disabled=1;"た。また、フォームタグで : を使用してみました。

どちらもフォームの送信を停止しますが、理由はわかりません。私もこれを試しました:

onClick="this.RegisterBtn.disabled=1; this.form1.submit();"

ここで、ボタンが無効になっているときに「isset」関数がfalseを返すという仮定を思いつきました。ここで経験した人がそれを確認するか、この問題を解決するのを手伝ってくれるなら、私は非常に感謝しています。これ :) 、

事前にたくさんのありがとう

編集: フォーム アクションは null (同じページにリダイレクト) で、コードはフォームの上にあります。

編集: ボタンを無効にすると、 isset($_POST['submit']) は常に false を返します。

解決策:わかりました、私はそれを解決しました。誰かが同じ問題に直面している私の投稿にクロスオーバーした場合に備えて、私はそれをどのように解決しましたか:

まず、ボタンを無効にすると、 isset($_POST['buttonname']) は常に false を返します。だから私は次のことをしました:

私が使用したこの条件の代わりに: if (!empty($_POST)) ..... コードを含める

そして、私は(フォームタグで)onsubmitを使用しました.. this.button1.disabled=1; 、そして今ではすべてが完全に機能します:-)、フォームを2回送信することはできません:D.

4

2 に答える 2

0

フォームをいじることは忘れてください。サーバー側で次の簡単なチェックを使用します。

  • まったく同じメール アドレスを登録するための 2 回目の要求が発生した場合は、無視してください。
  • 別の電子メール アドレスが発生した場合は、更新します。
  • 前になかった場合は、追加します。
于 2012-06-03T23:20:02.443 に答える
0

試す

<input type="submit" name="submit" value="Submit" onclick="this.disabled = true;" />
于 2012-06-03T21:45:10.617 に答える