关于防止表单重复提交的做法有很多,本人知道的有如下,只是简单讲讲,大家觉得什么办法最简单又有效?
1.有redis的环境
把提交的动作action,参数之类的作为redis的key,存进redis,设置一个很短的缓存时间,提交的时候判断如果存在这个key,说明是重复提交数据。
2.jquery前端判断
除了在程序端判断重复提交外,在页面前端也加一层措施,如点击提交按钮,按钮状态不可用(有的按钮用的a标签),如果不是按钮button,可以用jquery在提交的时候设置一个属性值,如果有了这个属性值,表示已经提交。
$("body").data("applycancel","unlock");
3.表单隐藏域token
生成一个随机数,放进session,给表单加一个隐藏域放进token,提交的时候判断表单的token隐藏域和session的值是否一致,如果不一致表示重复提交,处理表单的时候unset掉这个session。
各位还有什么办法,什么办法最好,谢谢!
Gunakan Etag untuk melaksanakan mekanisme penguncian optimistik dalam kawalan serentak Contoh berikut tidak terhad kepada penyerahan berulang:
Dalam senario serentak, apabila berbilang pelanggan mengendalikan sumber yang sama pada masa yang sama, situasi akan timbul: sumber yang dikendalikan oleh pelanggan diubah dalam keadaan yang tidak diketahui.
Contoh mudah:
Pengguna A menyiarkan siaran dengan kandungan
post-a
Pengguna B melihatpost-a
dan kemudian menulis ulasan di bawah Semasa B menulis ulasan, pengguna A menukar kandungan siaran itu kepadapost-aa
. Satu masalah yang akan timbul ialah komen yang ditulis oleh pengguna B untukpost-a
kelihatan pelik^_^Penyelesaian adalah sangat mudah Apabila B melihat A, berikan dia teg pengenalan sumber-1 apabila B menyerahkan ulasan, dia menyerahkannya bersama-sama dengan tag pengenalan-1 ini. Pelayan mengesahkan syarat a priori sebelum menerima permintaan Jika tiada perubahan dalam kandungan siaran pada masa itu, ia masih tag-1, yang bermaksud kejayaan.
Jika kandungan siaran berubah, ID baharu ialah teg-2, yang tidak sepadan dengan teg-1 yang diserahkan oleh B, menunjukkan bahawa sumber telah berubah dalam tempoh tersebut dan 412 Prasyarat Gagal dikembalikan. Kemudian muat semula halaman atau gesaan, beritahu B tentang perubahan ini dan teruskan mengulas.
Situasi API adalah serupa, anda hanya perlu menambah pengecam pada sumber yang dikembalikan.
Jana nilai cincang daripada parameter yang dihantar, dan simpannya dalam medan kod_cincang pangkalan data Medan ini digunakan sebagai indeks unik. Dan setiap kali ia dimasukkan ke dalam pangkalan data, nilai cincang dijana dengan cara yang sama untuk menentukan sama ada nilai cincang wujud.