Rumah > Artikel > pembangunan bahagian belakang > Fahami prinsip anti-goncang dan anti-penyerahan semula dalam PHP
PHP ialah bahasa pengaturcaraan yang digunakan secara meluas untuk pembangunan bahagian pelayan dengan ciri dan fleksibiliti yang berkuasa. Dalam perkembangan sebenar, kita sering menghadapi senario di mana kita perlu menghalang penyerahan berulang atau anti-goncang. Artikel ini akan meneroka prinsip anti-goncang dan anti-penyerahan semula dalam PHP dan memberikan contoh kod khusus.
1. Prinsip anti goncang
Anti goncang merujuk kepada teknologi yang menghalang pencetus berterusan Ia sering digunakan untuk mengoptimumkan pengalaman pengguna dan mengurangkan permintaan atau operasi yang tidak perlu. Dalam PHP, kami boleh melaksanakan anti-goncang melalui panggilan JavaScript atau Ajax.
Prinsip anti goncang sangat mudah, iaitu dalam tempoh masa tertentu, pelbagai peristiwa pencetus hanya akan dilaksanakan pada kali terakhir. Sebagai contoh, fungsi carian masa nyata kotak carian akan mencetuskan permintaan carian setiap kali pengguna memasukkan surat permintaan yang kerap sedemikian akan memberi banyak tekanan pada pelayan dan pengalaman pengguna tidak akan baik. Melalui teknologi anti-goncang, kami boleh menetapkan ambang masa dan hanya menghantar permintaan selepas pengguna berhenti memasukkan untuk tempoh masa untuk mengelakkan permintaan yang kerap.
Berikut ialah contoh kod PHP mudah yang menunjukkan cara menggunakan teknologi nyahlantun:
<?php function debounce($callback, $delay) { static $lastCallTime = 0; if (time() - $lastCallTime < $delay) { return; } $lastCallTime = time(); call_user_func($callback); } function search() { // 假设这里是搜索功能的代码 // ... echo "搜索结果"; } // 假设这里是输入框的事件处理代码 input.addEventListener('input', function() { debounce(search, 500); }); ?>
Dalam kod di atas, fungsi debounce
menerima fungsi panggil balik dan masa tunda, The fungsi anti goncang dilaksanakan dengan membandingkan perbezaan antara masa semasa dan masa pencetus terakhir. Setiap kali peristiwa dicetuskan, mula-mula tentukan sama ada perbezaan masa antara dua pencetus lebih besar daripada masa tunda yang ditetapkan. Jika ya, laksanakan fungsi panggil balik. debounce
函数接受一个回调函数和延迟时间,通过比较当前时间和上次触发时间的差值来实现防抖功能。每次触发事件时,首先判断两次触发的时间差是否大于设定的延迟时间,如果是,则执行回调函数。
二、防重复提交的原理
防重复提交是指在提交表单或者请求时,阻止用户多次提交相同的数据,保证数据的唯一性和正确性。在 PHP 中,我们可以使用一些技术手段来防止用户的重复提交。
防止重复提交的常见原理是使用 Token 或者 Session 进行验证。当用户提交表单时,服务器会生成一个唯一的 Token,并将其存储到 Session 中或者作为表单隐藏字段返回给客户端。服务器在接收到用户提交的请求时,首先验证 Token 的有效性,如果该 Token 已经使用过或者不符合规则,就拒绝处理。通过这种方式,我们可以防止用户重复提交相同的请求。
下面是一个简单的 PHP 代码示例,演示如何使用 Token 技术防止重复提交:
<?php session_start(); // 开启 Session function generateToken() { $token = md5(uniqid(rand(), true)); $_SESSION['token'] = $token; return $token; } function checkToken($token) { if (!isset($_SESSION['token']) || $_SESSION['token'] !== $token) { return false; } $_SESSION['token'] = null; // 使用过的 Token 置空,避免重复使用 return true; } function submitForm() { if ($_SERVER['REQUEST_METHOD'] !== 'POST') { return; } $token = isset($_POST['token']) ? $_POST['token'] : ''; if (checkToken($token)) { // 处理表单提交的逻辑 // ... echo "表单提交成功"; } else { echo "表单重复提交"; } } // 生成 Token 并放入隐藏字段 $token = generateToken(); echo "<form method='post' action=''>"; echo "<input type='hidden' name='token' value='$token'>"; echo "<input type='submit' value='提交'>"; echo "</form>"; submitForm(); ?>
在上面的代码中,generateToken
函数用于生成一个唯一的 Token,并将其存储到 Session 中。checkToken
generateToken
digunakan untuk menjana Token unik dan simpannya dalam Sesi. Fungsi checkToken
digunakan untuk mengesahkan sama ada Token yang diserahkan adalah sah. Apabila borang diserahkan, Token mula-mula dijana dan diletakkan dalam medan tersembunyi, dan kemudian kesahihan Token disahkan pada bahagian pelayan. 🎜🎜Ringkasan: 🎜🎜Melalui contoh kod di atas, kita dapat memahami dengan jelas prinsip dan kaedah pelaksanaan penyerahan anti-goncang dan anti-pendua dalam PHP. Penyerahan anti goncang dan anti pendua adalah keperluan biasa dalam pembangunan sebenar Cara teknikal yang munasabah boleh meningkatkan pengalaman pengguna dan melindungi keunikan dan ketepatan data. Dalam aplikasi praktikal, kita boleh memilih cara teknikal anti-goncang dan anti-penyerahan semula yang sesuai mengikut senario tertentu. 🎜Atas ialah kandungan terperinci Fahami prinsip anti-goncang dan anti-penyerahan semula dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!