. Anti goncang bermakna apabila pengguna kerap mencetuskan peristiwa, kami hanya mahu melaksanakan tindakan yang dicetuskan terakhir, manakala penyerahan anti-berulang bermakna apabila pengguna menyerahkan borang beberapa kali dalam tempoh yang singkat, kami perlu memastikan bahawa hanya satu penyerahan diproses. Artikel ini akan menumpukan pada membandingkan dan memperkenalkan beberapa cara untuk mencapai anti-goncang dan anti-penyerahan semula dalam PHP, dan menyediakan contoh kod khusus.
Cara melaksanakan anti goncangAnti goncang boleh disediakan dengan menetapkan pemasa untuk menangguhkan operasi yang sepadan untuk tempoh masa tertentu selepas peristiwa pencetus terakhir. Berikut ialah contoh kod yang menggunakan PHP untuk mencapai anti-goncang:
function debounce($callback, $delay) { $timer = null; return function() use ($callback, $delay, &$timer) { if ($timer !== null) { clearTimeout($timer); } $timer = setTimeout($callback, $delay); }; } // 使用防抖函数处理表单提交事件 $debouncedHandler = debounce(function() { // 处理表单提交逻辑 }, 1000); // 绑定事件处理函数 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $debouncedHandler(); }
session_start(); function generateToken() { return md5(uniqid(rand(), true)); } function validateToken($token) { // 从 session 中获取 token $storedToken = $_SESSION['token']; return $storedToken && $token === $storedToken; } function removeToken() { // 从 session 中移除 token unset($_SESSION['token']); } // 生成 Token 并存储在 session 中 $_SESSION['token'] = generateToken(); // 处理表单提交逻辑 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $token = $_POST['token']; if (validateToken($token)) { // 执行表单提交操作 // ... // 提交完成后移除 Token removeToken(); } else { // Token 验证失败,可能是重复提交 // 提示用户不要重复提交 } }
// 处理表单提交逻辑 if ($_SERVER['REQUEST_METHOD'] === 'POST') { // 执行表单提交操作 // ... // 重定向到新页面 header("Location: success.php"); exit; }
dalam kod di atas tanpa menyerahkan borang lagi.
Dengan membandingkan kaedah pelaksanaan penyerahan anti-goncang dan anti-pendua PHP, kami boleh memilih cara yang sesuai untuk melindungi aplikasi kami berdasarkan keperluan khusus. Anti goncang sesuai untuk situasi di mana pengguna perlu mengelak daripada mencetuskan peristiwa dengan kerap, manakala menghalang penyerahan borang berulang adalah untuk menghalang pengguna daripada menyerahkan borang beberapa kali. Menggunakan pengesahan dan pengalihan Token ialah dua kaedah biasa dan boleh dilaksanakan Pembangun boleh memilih kaedah yang sesuai untuk mengelakkan penyerahan berulang berdasarkan situasi sebenar.
Atas ialah kandungan terperinci Perbandingan kaedah pelaksanaan penyerahan anti-goncang dan anti-pendua PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!