python - 如何防止狂点提交表单按钮导致的数据重复?
高洛峰
高洛峰 2017-04-18 10:05:45
0
12
1659
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(12)
洪涛

Lumpuhkan butang serta-merta selepas mengkliknya Jika penyerahan gagal, pulihkan butang itu, jika tidak, ia akan diubah hala ke halaman kejayaan.

Atau selepas mengklik, topeng akan muncul.

Walau bagaimanapun, kedua-dua penyelesaian di atas memerlukan js. Mengapa anda tidak mahu menggunakan js?

迷茫

1.Butang JS menghalang klik berulang

2. Kawalan cache sisi pelayan, kaedahnya ialah menulis perpustakaan berulang kali

3 Cipta indeks unik dalam pangkalan data (contohnya, tajuk siaran adalah unik dan tidak boleh diulang)

阿神

Boleh dikawal dari hadapan dan belakang:

  • Tambah logik kawalan bahagian hadapan Apabila pengguna mengklik untuk menyiarkan, lumpuhkan butang "Siar"

  • Tambah logik kawalan latar belakang Apabila permintaan siaran dihantar, semak sama ada orang itu telah menghantar siaran dengan tajuk dan kandungan yang sama, larang penciptaan siaran pendua ini

迷茫

Anda boleh menjana id apabila templat dipaparkan, kemudian serahkan id bersama-sama semasa menyerahkan, dan kemudian bandingkan dengan hujung belakang, supaya jika id yang diluluskan tidak betul, maka pemprosesan akan diabaikan.

PHPzhong

Pertama, penyelesaian yang lebih mudah ialah menggunakan fungsi nyahlantun untuk mengehadkan kekerapan pencetus panggil balik DOM.

Kedua, jika anda masih perlu mempertimbangkan situasi di mana pengguna melumpuhkan js dalam era ini, maka jangan lakukannya di bahagian hadapan.

洪涛

Masalah ini tidak boleh diselesaikan dengan bergantung pada bahagian hadapan sahaja.

  1. Tambah caching, gunakan peta untuk mesin tunggal dan gunakan redis untuk caching teragih.

  2. Gunakan prosedur tersimpan Mysql untuk menyerahkan tekanan konkurensi kepada pangkalan data

  3. Kunci, kunci optimistik atau kunci pesimis

  4. Kunci unik

刘奇

Halaman semasa menjana id unik Apabila menyerahkan, pelayan menentukan bahawa ia hanya akan diproses sekali. Contohnya, halaman penyerahan borang laravel mempunyai csrf_token

刘奇

Kemudian tulis csrf anda sendiri di latar belakang Sediakan beberapa idea dan jana kunci secara automatik apabila menyerahkan kandungannya, tetapkan semula kunci itu atau kosongkan hanya penyerahan pendua

迷茫

Borang kiriman borang melepasi rentetan rawak medan tersembunyi dan masukkannya ke dalam sesi
Apabila atur cara menerima rentetan rawak ini dan membandingkannya dengan rentetan dalam sesi, jika ia sama, ia akan diserahkan dan jika ia tidak sama, ia akan menggesa perbandingan ralat Hanya tetapkan semula sesi ini

Ty80

1. Pengesahan JS, lumpuhkan butang hantar selepas penyerahan
2. Pengesahan sisi pelayan, setiap kali halaman dimuat semula, token akan dihasilkan dalam halaman tersebut dinilai sama ada token itu sah, maka data akan diproses dan token akan dimusnahkan, jika front-end menghantar berulang kali, ia pasti tidak akan diproses kerana token dimusnahkan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan