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

WBOY
Lepaskan: 2023-10-12 10:12:01
asal
1027 orang telah melayarinya

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();
?>
Salin selepas log masuk

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();
?>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!