Cara melaksanakan fungsi anti goncang dalam PHP untuk mengelakkan penyerahan berulang
Fungsi anti goncang bermaksud apabila pengguna terus mencetuskan acara, fungsi pemprosesan acara hanya akan dilaksanakan sekali dan tidak akan diproses untuk tempoh masa selepas pencetus terakhir Akan dilaksanakan semula. Dalam pembangunan sebenar, pengguna sering menghadapi situasi di mana pengguna menghantar borang berulang kali Menggunakan fungsi anti goncang boleh mengelakkan situasi ini dengan berkesan.
Terdapat banyak cara untuk melaksanakan fungsi anti goncang dalam PHP Di bawah saya akan memperkenalkan kaedah pelaksanaan biasa dan memberikan contoh kod khusus.
// 开启 Session session_start(); // 获取当前时间戳 $currentTimestamp = time(); // 获取上一次提交的时间戳 $lastTimestamp = $_SESSION['lastTimestamp'] ?? 0; // 判断时间间隔是否小于指定的防抖时间(例如5秒) if ($currentTimestamp - $lastTimestamp < 5) { echo '请勿重复提交'; exit; } // 更新上一次提交的时间戳 $_SESSION['lastTimestamp'] = $currentTimestamp;
Dalam contoh ini, kami menggunakan Sesi untuk merekodkan cap waktu komit terakhir. Dengan membandingkan cap masa semasa dengan cap masa penyerahan terakhir, tentukan sama ada selang masa kurang daripada masa anti-goncang yang ditentukan (contohnya, 5 saat). Jika selang masa kurang daripada masa anti-goncang, ia boleh dianggap sebagai penyerahan berulang, dan maklumat segera akan dikeluarkan secara langsung dan pelaksanaan skrip akan tamat.
Perlu diingatkan bahawa untuk dapat menggunakan Sesi, kita perlu memanggil fungsi session_start()
pada permulaan skrip untuk membuka Sesi.
Satu lagi cara yang biasa digunakan untuk mengelakkan penyerahan pendua ialah menggunakan Token. Setiap kali borang diserahkan, Token unik dijana dan disimpan dalam medan Sesi atau borang tersembunyi. Apabila memproses penyerahan borang di latar belakang, mula-mula sahkan sama ada Token itu sah, dan jika ya, teruskan pemprosesan, jika tidak mesej segera akan dikeluarkan.
Berikut ialah contoh kod yang menggunakan Token untuk menghalang penyerahan berulang:
// 开启 Session session_start(); // 生成一个唯一的 Token $token = md5(uniqid(rand(), true)); // 将 Token 保存在 Session 中 $_SESSION['token'] = $token; // 在表单中输出隐藏域,将 Token 传递给后台 echo '<input type="hidden" name="token" value="' . $token . '">'; // 处理表单提交 if ($_POST['token'] !== $_SESSION['token']) { echo '请勿重复提交'; exit; } // 继续处理表单数据 // ...
Dalam contoh ini, kami menjana Token unik setiap kali borang diserahkan, dan menyimpan Token dalam Sesi. Hantar Token ke bahagian belakang melalui medan tersembunyi dalam bentuk bahagian hadapan. Apabila memproses penyerahan borang di latar belakang, mula-mula sahkan sama ada Token yang diperoleh daripada borang adalah sama dengan Token yang disimpan dalam Sesi Jika ia tidak sama, ia akan dianggap sebagai penyerahan berulang, dan maklumat segera akan dikeluarkan secara langsung dan pelaksanaan skrip akan tamat.
Ringkasnya, dengan menggunakan Sesi atau Token, kami boleh melaksanakan fungsi anti goncang dalam PHP untuk mengelakkan penyerahan berulang. Mengikut keperluan dan senario khusus, pilih cara yang sesuai untuk melaksanakannya. Di atas ialah dua kaedah pelaksanaan yang biasa digunakan, dan contoh kod khusus diberikan untuk rujukan. Semoga ia membantu semua orang.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi anti-goncang dalam PHP untuk mengelakkan penyerahan berulang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!