ホームページ バックエンド開発 PHPチュートリアル 入力ボタンに関する非常に深刻な問題

入力ボタンに関する非常に深刻な問題

Jun 13, 2016 pm 01:32 PM
memcache order quot session

入力ボタン 非常に深刻な問題です
返金ページにボタンがあります
このボタンを押すと、 SQL を実行します。これは、他の人が支払った合計金額を Web サイトのアカウントに返します。

問題は、この注文のキャンセルをクリックすると、ブラウザが応答するまでに 1 ~ 2 秒かかることです。しかし、押し続けると、返金されたお金が重ねて表示されることがわかりました!

たとえば、ユーザーが注文のキャンセルを 10 回連続してクリックすると、何回クリックしても 100 元が返金されます。返金は10元になります。

これを解決するにはどうすればよいですか?

-----解決策--------------------------------
送信後、そのボタンはハッキングされます。さらに、セッション変数を使用して制御します。提出する際はチェックを入れて再提出するかどうかを判断してください。
------解決策----------------------
一般的に現金を伴う支払いページの場合、フォームには注文 ID が隠されている必要があります。データベースがトランザクションを実行しているため、繰り返し送信される問題は発生しません。

ここでのアプリケーションがメッセージの繰り返しを防ぐためだけに非常に一般的である場合、それを実現する方法はまだいくつかあります。 PHP 自体はこのトランザクションを実行できません。つまり、ID が支払われたかどうかを確認し、支払済みとしてマークするという 2 つの操作は、データベースのみがトランザクションのアトミック性を保証できるためです。もう 1 つの方法は、memcache のアトミックな追加です。これは賢明です。技術。

ここでは、ID は session_start の後にローカライズされ、PHP プロセス間で共有できないため、セッションの助けを借りて保存されません。そのため、フォームの非表示 ID は session_id の助けを借りてのみ memcache に保存されます。

フォームを更新すると、memcache の ID が非表示フィールドに配置され、アトミックな追加の戻り値がフォーム ID であるかどうかが決定されます。 +1。そうであれば送信は成功し、そうでなければ送信は失敗します。これは、トランザクションを実装するために memcache のアトミックな加算を偽装したものです。アトミックな加算では、最初に取得してから加算することを回避しますが、-1 が id と等しいかどうかを判断する限り、アトミックに 1 を加算して結果を返します。これは冪等性と非常によく似た巧妙なトリックであり、一部の分散ロックフリー操作でこれが行われます。
------解決策---------
ブラウザで無効にすることで無効にすることができます
サーバーが判断を追加することをお勧めします。そうしないと、他の人が繰り返し送信をシミュレートすると終了します

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

セッション失敗を解決する方法 セッション失敗を解決する方法 Oct 18, 2023 pm 05:19 PM

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

PHP セッションのクロスドメイン問題の解決策 PHP セッションのクロスドメイン問題の解決策 Oct 12, 2023 pm 03:00 PM

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

PHP開発でMemcacheを使用するにはどうすればよいですか? PHP開発でMemcacheを使用するにはどうすればよいですか? Nov 07, 2023 pm 12:49 PM

Web 開発では、Web サイトのパフォーマンスと応答速度を向上させるためにキャッシュ テクノロジを使用する必要があることがよくあります。 Memcache は、あらゆる種類のデータをキャッシュでき、高い同時実行性と高可用性をサポートする一般的なキャッシュ テクノロジです。この記事では、PHP 開発で Memcache を使用する方法を紹介し、具体的なコード例を示します。 1. Memcache のインストール Memcache を使用するには、まずサーバーに Memcache 拡張機能をインストールする必要があります。 CentOS オペレーティング システムでは、次のコマンドを使用できます。

JavaScript Cookie と PHP Cookie の違いは何ですか? JavaScript Cookie と PHP Cookie の違いは何ですか? Sep 02, 2023 pm 12:29 PM

JavaScriptCookies JavaScript Cookie の使用は、設定、購入、手数料、その他の情報を記憶および追跡する最も効果的な方法です。訪問者のエクスペリエンスを向上させるために必要な情報やウェブサイトの統計。 PHPCookieCookie は、クライアント コンピューターに保存され、追跡目的で保持されるテキスト ファイルです。 PHP は HTTP Cookie を透過的にサポートします。 JavaScript Cookie はどのように機能しますか?サーバーは、訪問者のブラウザに Cookie の形式でデータを送信します。ブラウザは Cookie を受け入れることができます。存在する場合、それは訪問者のハードドライブにプレーンテキストレコードとして保存されます。さて、訪問者がサイト上の別のページに到達すると、

PHP セッションのクロスドメインおよび AJAX 非同期通信の最適化 PHP セッションのクロスドメインおよび AJAX 非同期通信の最適化 Oct 12, 2023 am 09:22 AM

ドメインを越えた PHPSession と AJAX 間の非同期通信の最適化 インターネットの発展に伴い、クロスドメイン アクセスと非同期通信は、現代の Web アプリケーション開発における一般的な要件になりました。この記事では、PHPSession を使用してクロスドメイン アクセスを実現する方法に焦点を当て、AJAX の非同期通信効率を向上させるための最適化方法をいくつか紹介します。 1. クロスドメインアクセスの問題 Web開発において、ブラウザがあるドメイン名のWebページからHTTPリクエストを開始し、別のドメイン名のレスポンスデータを返す場合にクロスドメインアクセスの問題が発生します。

セッションが失敗する原因は何ですか? セッションが失敗する原因は何ですか? Oct 17, 2023 pm 05:01 PM

セッション失敗の理由には、セッションのタイムアウト、セッション数の制限、セッションの整合性チェック、サーバーの再起動、ブラウザまたはデバイスの問題などが含まれます。詳細な紹介: 1. セッション タイムアウト: サーバーはセッションのデフォルトのタイムアウトを設定します。ユーザーが一定期間サーバーと対話しない場合、セッションは自動的に期限切れになります。2. セッション数の制限: サーバーには番号があります。各ユーザーのセッション数に制限が設定されており、ユーザーが作成したセッションの数がこの制限を超えると、最新のセッションが最も古いセッションに上書きされます。

PHP のセッション認証メカニズムとセキュリティの最適化をマスターする PHP のセッション認証メカニズムとセキュリティの最適化をマスターする Aug 06, 2023 pm 04:17 PM

PHP のセッション認証メカニズムとセキュリティの最適化をマスターする セッション認証メカニズムは、Web 開発で一般的に使用される認証方法です。 PHP では、セッションを使用してユーザー ID 認証と権限制御を実装し、ユーザーの機密情報が漏洩しないように保護します。この記事では、PHP でセッションを正しく使用し、セッションのセキュリティを向上させる方法を紹介します。セッションを開く PHP では、その機能を使用するために最初にセッションを開く必要があります。使用

PHP 開発で効率的なデータの読み取りおよび書き込み操作を行うために Memcache を使用するにはどうすればよいですか? PHP 開発で効率的なデータの読み取りおよび書き込み操作を行うために Memcache を使用するにはどうすればよいですか? Nov 07, 2023 pm 03:48 PM

PHP 開発では、Memcache キャッシュ システムを使用すると、データの読み取りと書き込みの効率が大幅に向上します。 Memcache は、データベースの頻繁な読み取りと書き込みを回避するためにデータをメモリにキャッシュできるメモリベースのキャッシュ システムです。この記事では、PHP で Memcache を使用して効率的なデータの読み取りおよび書き込み操作を行う方法を紹介し、具体的なコード例を示します。 1. Memcache のインストールと構成 まず、サーバーに Memcache 拡張機能をインストールする必要があります。通過できる

See all articles