Bagaimana untuk menghalang halaman daripada dihantar berulang kali dalam sistem pembunuh kilat PHP

PHPz
Lepaskan: 2023-09-19 09:04:02
asal
856 orang telah melayarinya

Bagaimana untuk menghalang halaman daripada dihantar berulang kali dalam sistem pembunuh kilat PHP

Bagaimana untuk mengelakkan halaman daripada dihantar berulang kali dalam sistem jualan kilat PHP

Dengan peningkatan e-dagang, pelbagai aktiviti promosi seperti jualan kilat, jualan tergesa-gesa, dll. Borang juga menjadi lebih biasa. Apabila melaksanakan sistem jualan kilat, masalah penting perlu diselesaikan, iaitu penyerahan halaman berulang. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis kod untuk mengelakkan penyerahan isu berulang pada halaman, dan menyediakan beberapa contoh kod khusus untuk rujukan.

1. Mengapa perlu menghalang penyerahan halaman berulang

Dalam sistem jualan kilat, pengguna boleh menghantar pesanan berulang kali, menyebabkan seorang pengguna mengambil beberapa produk, atau satu produk dibeli oleh berbilang Dibeli oleh pengguna. Ini bukan sahaja akan menyebabkan pembaziran sumber, tetapi juga menjejaskan pengalaman pengguna lain dan juga menyebabkan sistem ranap. Oleh itu, menghalang penyerahan halaman berulang adalah kunci untuk memastikan operasi normal sistem jualan kilat.

2. Gunakan mekanisme Token untuk mengelakkan penyerahan halaman berulang

Mekanisme token ialah kaedah biasa untuk mengelakkan penyerahan halaman berulang. Langkah pelaksanaan khusus adalah seperti berikut:

  1. Jana Token unik apabila halaman dimuatkan dan simpannya dalam sesi.
session_start();
$token = uniqid(); // 生成唯一Token
$_SESSION['token'] = $token; // 将Token保存在会话中
Salin selepas log masuk
  1. Tambah medan tersembunyi pada borang halaman dan hantar nilai Token ke pelayan sebagai nilai medan.
<form method="post" action="submit.php">
   <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
   <!-- 其他表单字段 -->
   <input type="submit" value="提交">
</form>
Salin selepas log masuk
  1. Sahkan kesahihan Token di bahagian pelayan.
session_start();
if ($_POST['token'] != $_SESSION['token']) {
   // Token无效,可能是重复提交
   // 处理重复提交的代码
} else {
   // Token有效,继续处理表单数据
   // 处理表单提交的代码
}
Salin selepas log masuk

Melalui langkah di atas, kami boleh memastikan setiap penyerahan borang hanya boleh menggunakan Token yang sah sekali, sekali gus mengelakkan masalah penyerahan halaman berulang.

3. Gunakan masa tamat tempoh pengesahan untuk mengelakkan penyerahan berulang

Selain mekanisme Token, menggunakan masa tamat pengesahan juga merupakan kaedah yang berkesan untuk menghalang penyerahan halaman berulang. Langkah pelaksanaan khusus adalah seperti berikut:

  1. Jana rentetan pengesahan unik apabila halaman dimuatkan dan simpannya dalam sesi.
session_start();
$expire = time() + 60; // 设置验证串过期时间为60秒后
$hash = md5(uniqid()); // 生成唯一验证串
$_SESSION['hash'] = $hash;
$_SESSION['expire'] = $expire;
Salin selepas log masuk
  1. Tambah rentetan pengesahan dan masa tamat tempoh pada borang.
<form method="post" action="submit.php">
   <input type="hidden" name="hash" value="<?php echo $_SESSION['hash']; ?>">
   <input type="hidden" name="expire" value="<?php echo $_SESSION['expire']; ?>">
   <!-- 其他表单字段 -->
</form>
Salin selepas log masuk
  1. Sahkan kesahihan dan masa tamat rentetan pengesahan di sebelah pelayan.
session_start();
if ($_POST['hash'] != $_SESSION['hash'] || time() > $_SESSION['expire']) {
   // 验证串无效或已过期,可能是重复提交
   // 处理重复提交的代码
} else {
   // 验证串有效且未过期,继续处理表单数据
   // 处理表单提交的代码
}
Salin selepas log masuk

Dengan menetapkan masa tamat tempoh rentetan pengesahan, kami boleh memastikan borang itu sah dalam julat masa tertentu dan akan dianggap tidak sah selepas masa yang ditentukan.

4. Ringkasan

Apabila melaksanakan sistem pembunuh kilat PHP, menghalang penyerahan halaman berulang adalah langkah keselamatan yang penting. Artikel ini memperkenalkan dua kaedah yang biasa digunakan untuk mengelakkan penyerahan halaman berulang, iaitu mekanisme Token dan masa tamat pengesahan. Dengan menggunakan kaedah ini secara rasional, anda boleh mencegah masalah penyerahan halaman dengan berkesan dan meningkatkan keselamatan dan kestabilan sistem.

(Nota: Kod di atas hanyalah contoh, dan pelaksanaan khusus perlu diselaraskan mengikut keperluan perniagaan sebenar.)

Atas ialah kandungan terperinci Bagaimana untuk menghalang halaman daripada dihantar berulang kali dalam sistem pembunuh kilat PHP. 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