Heim Backend-Entwicklung PHP-Tutorial input button 一个很严重的有关问题

input button 一个很严重的有关问题

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

input button 一个很严重的问题
我在一个退款页面里面,有个按钮
按下这个按钮,会执行sql,就是把别人付过钱的总数退还到他们的网站账户里去。

问题就是,如果按一下这个cancel order是没问题的,浏览器需要1,2秒反应。但是连续按,发现退还的钱会叠加啊!

比如一个用户应该退10块钱,他点cancel order连续点了10下,那么他账户里就会多100块钱,应该不管他们点几下,退还的都是10块才对。

这应该怎么解决?

------解决方案--------------------
提交完,就黑了那个按钮。另外,使用session变量控制。提交的时候,对照一下,确定是否重复提交。
------解决方案--------------------
要是一般涉及到现金的支付页面的话,肯定是在表单里隐藏了一个订单ID,重复提交的问题是不会存在的,因为数据库做事务了。

这里如果你的应用是很普通的,就是为了防止重复留言,那么还是有点办法来实现的。因为PHP自身是做不了这个事务的,也就是检查ID是否被支付与之标记为支付这两个操作只有数据库可以保证事务原子性,另外一种办法就是memcache的原子加法属于一个巧妙手法。

这里id不借助session存储了,因为session_start之后session变量都是本地化的,php进程之间无法共享,所以只借助session_id把表单隐藏id存在memcache里。

刷新表单应该引发memcache里的id放在隐藏域里,提交表单应该引发memcache对该id原子加1,判断原子加的返回值是否为表单id+1,如果是就提交成功,否则提交失败。这是变相的借助memcache原子加法实现事务,因为原子加法避免了我们先取后加,而是原子的加1并返回结果,只要判断-1之后是否等于id即可,也是一门奇淫巧计了,这和幂等性什么的很类似,一些分布式无锁操作都是这么干的。
------解决方案--------------------
浏览器里面可以用disabled来禁用
建议服务端加个判断,不然别人模拟重复提交你就完了

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1662
14
PHP-Tutorial
1262
29
C#-Tutorial
1236
24
So beheben Sie Sitzungsfehler So beheben Sie Sitzungsfehler Oct 18, 2023 pm 05:19 PM

Ein Sitzungsfehler wird normalerweise durch den Ablauf der Sitzungslebensdauer oder das Herunterfahren des Servers verursacht. Die Lösungen: 1. Verlängern Sie die Lebensdauer der Sitzung. 3. Verwenden Sie Cookies. 4. Aktualisieren Sie die Sitzung.

Lösung für das domänenübergreifende Problem der PHP-Sitzung Lösung für das domänenübergreifende Problem der PHP-Sitzung Oct 12, 2023 pm 03:00 PM

Lösung des domänenübergreifenden Problems von PHPSession Bei der Entwicklung der Front-End- und Back-End-Trennung sind domänenübergreifende Anforderungen zur Norm geworden. Wenn es um domänenübergreifende Probleme geht, nutzen wir in der Regel Sitzungen und verwalten diese. Aufgrund von Richtlinieneinschränkungen für den Browserursprung können Sitzungen jedoch standardmäßig nicht über Domänen hinweg gemeinsam genutzt werden. Um dieses Problem zu lösen, müssen wir einige Techniken und Methoden verwenden, um eine domänenübergreifende gemeinsame Nutzung von Sitzungen zu erreichen. 1. Die häufigste Verwendung von Cookies zum domänenübergreifenden Teilen von Sitzungen

Wie verwende ich Memcache in der PHP-Entwicklung? Wie verwende ich Memcache in der PHP-Entwicklung? Nov 07, 2023 pm 12:49 PM

Bei der Webentwicklung müssen wir häufig Caching-Technologie verwenden, um die Leistung und Reaktionsgeschwindigkeit der Website zu verbessern. Memcache ist eine beliebte Caching-Technologie, die jeden Datentyp zwischenspeichern kann und hohe Parallelität und hohe Verfügbarkeit unterstützt. In diesem Artikel wird die Verwendung von Memcache in der PHP-Entwicklung vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Memcache installieren Um Memcache verwenden zu können, müssen wir zunächst die Memcache-Erweiterung auf dem Server installieren. Im CentOS-Betriebssystem können Sie den folgenden Befehl verwenden

Was sind die Unterschiede zwischen JavaScript- und PHP-Cookies? Was sind die Unterschiede zwischen JavaScript- und PHP-Cookies? Sep 02, 2023 pm 12:29 PM

JavaScript-Cookies Die Verwendung von JavaScript-Cookies ist die effektivste Möglichkeit, Präferenzen, Käufe, Provisionen und andere Informationen zu speichern und zu verfolgen. Informationen, die für ein besseres Besuchererlebnis oder Website-Statistiken benötigt werden. PHPCookieCookies sind Textdateien, die auf Client-Computern gespeichert und zu Nachverfolgungszwecken aufbewahrt werden. PHP unterstützt transparent HTTP-Cookies. Wie funktionieren JavaScript-Cookies? Ihr Server sendet einige Daten in Form eines Cookies an den Browser Ihres Besuchers. Browser können Cookies akzeptieren. Falls vorhanden, wird es als reiner Textdatensatz auf der Festplatte des Besuchers gespeichert. Wenn ein Besucher nun eine andere Seite der Website erreicht

Domainübergreifende PHP-Sitzungs- und asynchrone AJAX-Kommunikationsoptimierung Domainübergreifende PHP-Sitzungs- und asynchrone AJAX-Kommunikationsoptimierung Oct 12, 2023 am 09:22 AM

Optimierung der asynchronen Kommunikation zwischen PHPSession über Domänen hinweg und AJAX Mit der Entwicklung des Internets sind domänenübergreifender Zugriff und asynchrone Kommunikation zu allgemeinen Anforderungen in der modernen Webanwendungsentwicklung geworden. Dieser Artikel konzentriert sich auf die Verwendung von PHPSession zum Erreichen eines domänenübergreifenden Zugriffs und stellt einige Optimierungsmethoden zur Verbesserung der asynchronen Kommunikationseffizienz von AJAX bereit. 1. Das Problem des domänenübergreifenden Zugriffs tritt bei der Webentwicklung auf, wenn der Browser eine HTTP-Anfrage von einer Webseite eines Domänennamens initiiert und dann die Antwortdaten eines anderen Domänennamens zurückgibt.

Wie verwende ich Memcache für effizientes Schreiben und Abfragen von Daten in der PHP-Entwicklung? Wie verwende ich Memcache für effizientes Schreiben und Abfragen von Daten in der PHP-Entwicklung? Nov 07, 2023 pm 01:36 PM

Wie verwende ich Memcache für effizientes Schreiben und Abfragen von Daten in der PHP-Entwicklung? Mit der kontinuierlichen Weiterentwicklung von Internetanwendungen werden die Anforderungen an die Systemleistung immer höher. In der PHP-Entwicklung verwenden wir häufig verschiedene Caching-Technologien, um die Systemleistung und Reaktionsgeschwindigkeit zu verbessern. Eine der am häufigsten verwendeten Caching-Technologien ist Memcache. Memcache ist ein leistungsstarkes verteiltes Speicherobjekt-Caching-System, das zum Zwischenspeichern von Datenbankabfrageergebnissen, Seitenfragmenten, Sitzungsdaten usw. verwendet werden kann. Durch das Speichern von Daten im Speicher

Wie verwende ich Memcache für effiziente Datenlese- und -schreibvorgänge in der PHP-Entwicklung? Wie verwende ich Memcache für effiziente Datenlese- und -schreibvorgänge in der PHP-Entwicklung? Nov 07, 2023 pm 03:48 PM

In der PHP-Entwicklung kann die Verwendung des Memcache-Caching-Systems die Effizienz beim Lesen und Schreiben von Daten erheblich verbessern. Memcache ist ein speicherbasiertes Caching-System, das Daten im Speicher zwischenspeichern kann, um häufiges Lesen und Schreiben der Datenbank zu vermeiden. In diesem Artikel wird die Verwendung von Memcache in PHP für effiziente Lese- und Schreibvorgänge für Daten vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Memcache installieren und konfigurieren Zuerst müssen Sie die Memcache-Erweiterung auf dem Server installieren. kann passieren

Was sind die Gründe für einen Sitzungsfehler? Was sind die Gründe für einen Sitzungsfehler? Oct 17, 2023 pm 05:01 PM

Gründe für einen Sitzungsfehler sind unter anderem Sitzungs-Timeout, Sitzungsanzahlbegrenzung, Sitzungsintegritätsprüfung, Serverneustart, Browser- oder Geräteprobleme usw. Detaillierte Einführung: 1. Sitzungszeitlimit: Der Server legt ein Standardzeitlimit für die Sitzung fest. Wenn der Benutzer eine Zeit lang nicht mit dem Server interagiert, läuft die Sitzung automatisch ab. 2. Sitzungsanzahllimit: Der Server hat eine Nummer Für jeden Benutzer wird ein Limit festgelegt. Wenn die Anzahl der von einem Benutzer erstellten Sitzungen dieses Limit überschreitet, überschreibt die neueste Sitzung die älteste und so weiter.

See all articles