Bagaimana untuk melaksanakan fungsi anti-goncang dalam PHP untuk mengelakkan penyerahan berulang

王林
Lepaskan: 2023-10-12 09:46:01
asal
825 orang telah melayarinya

如何在 PHP 中实现防抖功能,避免重复提交

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.

  1. Gunakan Sesi untuk merekodkan cap waktu komit terakhir.
// 开启 Session
session_start();

// 获取当前时间戳
$currentTimestamp = time();

// 获取上一次提交的时间戳
$lastTimestamp = $_SESSION['lastTimestamp'] ?? 0;

// 判断时间间隔是否小于指定的防抖时间(例如5秒)
if ($currentTimestamp - $lastTimestamp < 5) {
    echo '请勿重复提交';
    exit;
}

// 更新上一次提交的时间戳
$_SESSION['lastTimestamp'] = $currentTimestamp;
Salin selepas log masuk

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.

  1. Gunakan Token untuk mengelakkan penyerahan berulang.

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;
}

// 继续处理表单数据
// ...
Salin selepas log masuk

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!

Label berkaitan:
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