ホームページ  >  記事  >  バックエンド開発  >  ページの更新を禁止する

ページの更新を禁止する

WBOY
WBOYオリジナル
2016-06-23 13:45:43764ブラウズ

現在問題が発生しています
サードパーティの支払いに接続するための電子商取引プラットフォームを開発します。支払いが完了すると、支払い成功ページに移動します。 。すると、データベース内の値が増加します。問題は、支払い成功ページを更新し続けるかどうかです。 。私のデータベース内の値は常に増加しています。実装できる簡単なアイデアはありますか? 支払いが行われた後、テーブルは更新され、その後のデータベースは更新されないというテーブルを設計できるという人もいます。実行されました。これは絶対にうまくいきません。 。仕事量が多すぎる。
$_SERVER['HTTP_REFERER'] を通じてソースを特定する方法を考えました。この Web サイトの場合、データベース ステートメントは実行されません。そうでない場合は、実行されます。
しかし、効果はあまり良くありません。
COOKIE を使用して実現できるという人もいます。これはどのように実現されますか?サードパーティのWebサイトから飛んできたパラメータ値なので、決済が成功したページにしか保存できません。そしてそれを判断材料に使うのか?前後の値が同じではないですか?データベースは引き続き実行されますか?


ディスカッション(解決策)に返信

送信時に ?????? を追加し、送信後に ??? をリセットしてください。その後、再提出することはできません。

送信時に ?????? を追加し、送信後に ??? をリセットするだけです。その後、再提出することはできません。


認証コードはまったく実装できません。 。これは、送信後、収集するためにサードパーティの支払いプラットフォームに転送され、検証コードのパラメータが認識されないためです。 JD.com に行って何かを買うときと同じように、お金を支払った後も、支払いが成功したことを示すために顧客に確認コードの入力を求めますか?これは冗談ではありません。

記録を表に書き込んで繰り返し提出して判定するか、セッション記録でマークが変わったら提出が完了したことを意味します。

支払い成功ページに論理演算を埋め込むのはなぜですか?論理操作を支払いインターフェイス データに書き込み、同期されたファイルを返して操作を実行できます。

各注文には注文番号がありませんか?
支払いステータス (ステータスなど) が格納されるフィールドは、支払いが行われていない場合は 0、支払いが成功すると 1 に設定されます。再度更新され、注文ステータスが 1 になった場合は、支払いが成功したことを通知するだけで、その後のデータは挿入しないでください

あなたのフレームワークが何であるかわかりません。

ビジネスロジック層がある場合は、決済ビジネスロジックを先に実行します。実行後、結果画面を直接表示するのではなく、表示ビジネスロジックを実行します。そのロジックで結果画面を表示します。これにより、更新時に表示に使用するビジネスロジックのみが更新されます。重複して提出することはありません。

より安全な方法もあります。送信されたページでは、固有のコードが生成され、セッションに配置され、さらに画面の非表示のコントロールにも配置されます。送信時に、セッション内の固有のコードと非表示のコントロールが一致しているかどうかが判断され、一致している場合は一致します。 、送信操作が実行されます。操作が完了したら、セッション内の固有のコードを削除します。このようにすると、セッションが削除され比較に一貫性がないため、更新時にページを再度更新しないように求めるメッセージが表示されます。




クリックすると灰色になり、ユーザーはクリックできなくなりますもう一度送信してください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。