input button 一个很严重的有关问题
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来禁用
建议服务端加个判断,不然别人模拟重复提交你就完了

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











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 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

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

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

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? 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

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

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.
