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来禁用
建议服务端加个判断,不然别人模拟重复提交你就完了

在Web应用中,缓存是一个非常重要的技术。缓存可以大大减少数据库和服务器的负载,提高Web应用的性能。Memcache是一种高性能的分布式内存缓存系统,常用于Web应用中。在PHP中使用Memcache缓存,有时会出现一些问题,本文将介绍这些问题及其解决办法。问题一:无法连接到Memcache服务器在使用Memcache缓存时,第一个遇到的问题可能是无法连接

随着互联网的飞速发展,越来越多的应用程序需要面对大量的并发请求,如何提高应用的并发处理能力成为开发者们需要解决的问题。其中,利用Memcache缓存技术进行并发优化成为了相对较为流行的一种方案。Memcache是一种高效的缓存技术,适用于大型Web应用程序、数据库和分布式系统。其特点是将数据存储于内存中,以实现高速读写操作。在Web应用程序的数据访问过程中,

Memcache是一种在Web应用中常用的缓存技术,对于高并发的应用,它能够减轻数据库的压力,提高数据读取速度,降低系统响应时间。但是,在实际运用中,由于某些原因,会出现缓存数据被破坏的情况。本文主要从以下几个方面来讲述如何避免PHP应用中Memcache缓存技术出现数据损坏的情况。一、数据序列化通常情况下,我们将需要缓存的数据直接以对象形式存储到Memca

Memcache是一种开源的、分布式的缓存技术。它通过将数据存储在内存中,极大地提高了数据的访问速度,从而提升了网站的性能和响应速度。在PHP项目中,Memcache缓存技术也被广泛应用,并且取得了很好的效果。本篇文章将深入探讨Memcache缓存技术在PHP项目中的应用和实践。一、Memcache的原理和优势Memcache是一种内存缓存技术,它可以将数据

随着网络技术越来越发达,网站的访问量逐渐增多,为了提升用户体验,我们需要尽可能地减少网页的加载时间和传输数据的大小。其中,Gzip压缩算法是一种经典的数据压缩算法,可以在传输数据时将数据压缩,减少传输数据的大小,从而提升网页的加载速度和用户体验。在使用Gzip压缩算法来优化网站时,我们还可以结合PHP中的Memcache缓存技术来进一步提升网站的性能。一、G

随着互联网技术的不断发展,网站的用户访问量越来越大,带来的并发访问量也越来越高。为了应对这种高并发访问,常用的手段是使用缓存技术。而在PHP语言中,Memcache缓存技术是一种非常有效的解决方案。Memcache是一种分布式缓存系统,能够将大量的数据缓存在内存中,并能够从内存中快速读取,从而提高网站的响应速度和并发能力。在本文中,我们将介绍如何使用PHP中

随着互联网时代的到来,Web应用程序的访问量越来越大,同时性能也愈发成为用户优先考量因素之一。缓存技术因此应运而生。Memcache作为一种高性能、分布式的内存对象缓存系统,被广泛应用于Web开发中。在PHP中构建Memcache缓存架构,可大幅提升Web应用程序的性能和响应速度。下面我们将分为以下几个方面,阐述Memcache缓存技术在PHP中的构建方式。

随着互联网的普及和Web应用的广泛使用,面对高并发的访问压力,提高Web应用的负载均衡效率是必不可少的。在这样的背景下,缓存技术成为了提高Web应用效率的重要手段之一。而其中的Memcache缓存技术,以其高效、快速、易于使用等优点,逐渐成为了Web应用开发者们广泛采用的工具。那么,什么是Memcache缓存技术?它怎么使用?今天,我们就来探讨一下,如何使用


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 Mac version
God-level code editing software (SublimeText3)

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Zend Studio 13.0.1
Powerful PHP integrated development environment
