Rumah >pembangunan bahagian belakang >tutorial php >Teknologi penyerahan anti goncang dan anti pendua PHP: cara memilih penyelesaian yang betul

Teknologi penyerahan anti goncang dan anti pendua PHP: cara memilih penyelesaian yang betul

WBOY
WBOYasal
2023-10-12 09:54:331055semak imbas

PHP 防抖和防重复提交技术:如何选择合适的方案

Teknologi penyerahan anti goncang dan anti pendua PHP: Cara memilih penyelesaian yang sesuai memerlukan contoh kod khusus

Dalam pembangunan web, penyerahan anti goncang dan anti pendua adalah dua keperluan teknikal biasa. Apabila berurusan dengan senario seperti interaksi pengguna atau penyerahan borang, kami perlu memastikan bahawa pengguna hanya boleh mencetuskan satu permintaan dalam tempoh masa tertentu untuk mengelakkan penyerahan berulang atau permintaan yang kerap. Artikel ini membincangkan cara memilih penyelesaian yang betul dan menyediakan contoh kod PHP khusus.

1. Teknologi anti goncang

Teknologi anti goncang bermaksud apabila sesuatu peristiwa dicetuskan secara berterusan, hanya operasi terakhir dilakukan dan operasi perantaraan diabaikan. Biasanya kami akan menetapkan pemasa Jika berbilang peristiwa berlaku dalam masa yang ditetapkan, hanya acara terakhir akan dikekalkan untuk memastikan permintaan hanya dihantar sekali.

Penstabilan boleh dicapai dengan cara yang berbeza, seperti menggunakan JavaScript atau PHP. Berikut ialah contoh kod untuk anti-goncang yang dilaksanakan dalam PHP:

<?php
  
class Debounce
{
    private $callback;
    private $delay;
    private $timer;
  
    public function __construct($callback, $delay)
    {
        $this->callback = $callback;
        $this->delay = $delay;
    }
  
    public function debounce()
    {
        if($this->timer) {
            clearTimeout($this->timer);
        }
  
        $this->timer = setTimeout($this->callback, $this->delay);
    }
}
  
// 示例用法
$debounce = new Debounce(function() {
    // 执行请求的操作
}, 1000);
  
// 触发事件时调用 debounce() 方法
$debounce->debounce();
?>

2. Teknologi penyerahan anti-ulang

Teknologi penyerahan anti-ulang adalah untuk menghalang pengguna daripada menghantar borang yang sama atau permintaan yang sama beberapa kali. Penyelesaian biasa adalah untuk memastikan bahawa permintaan borang yang sama hanya diproses sekali dengan menambahkan token unik pada borang dan mengesahkannya pada bahagian pelayan.

Berikut ialah contoh kod untuk mengelakkan penyerahan berulang menggunakan PHP:

<?php
  
class FormToken
{
    private $token;
  
    public function __construct()
    {
        if(!isset($_SESSION['token'])) {
            $_SESSION['token'] = bin2hex(random_bytes(32));
        }
  
        $this->token = $_SESSION['token'];
    }
  
    public function generateToken()
    {
        return '<input type="hidden" name="token" value="' . $this->token . '">';
    }
  
    public function validateToken()
    {
        if(isset($_POST['token']) && $_POST['token'] === $this->token) {
            // 执行表单提交的操作
        } else {
            // 非法请求,给出错误提示
        }
    }
}
  
// 示例用法
$formToken = new FormToken();
echo $formToken->generateToken();
$formToken->validateToken();
?>

Menggunakan kod sampel ini, kami boleh menambah medan token tersembunyi pada borang dan mengesahkannya apabila borang diserahkan. Hanya permintaan yang lulus pengesahan akan diproses.

3. Pilih penyelesaian yang sesuai

Apabila memilih penyelesaian penyerahan anti goncang dan anti duplikasi, ia perlu dinilai berdasarkan keperluan perniagaan tertentu. Perkara berikut boleh digunakan sebagai rujukan:

  1. Teknologi anti goncang sesuai untuk situasi di mana pengguna kerap mencetuskan peristiwa yang sama, seperti klik berterusan butang, acara menatal, dsb. Sesuai untuk operasi interaktif pihak pelanggan, yang boleh mengurangkan permintaan yang tidak perlu.
  2. Teknologi penyerahan anti-ulang sesuai untuk situasi di mana ia perlu untuk menghalang pengguna daripada menghantar borang yang sama atau meminta beberapa kali. Sesuai untuk penyerahan borang sebelah pelayan, pemprosesan data dan senario lain.
  3. Jika operasi sensitif seperti kerahsiaan terlibat, adalah disyorkan untuk menggunakan teknologi anti goncang dan anti penyerahan semula pada masa yang sama untuk meningkatkan keselamatan.

Ringkasnya, sama ada penyerahan anti goncang atau anti pendua, memilih penyelesaian yang sesuai perlu diukur mengikut keperluan perniagaan tertentu. Kod sampel di atas boleh digunakan sebagai rujukan, dan pembangun boleh membuat pengubahsuaian dan pengoptimuman yang sesuai mengikut situasi sebenar.

Atas ialah kandungan terperinci Teknologi penyerahan anti goncang dan anti pendua PHP: cara memilih penyelesaian yang betul. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn