Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencegah Penyerahan Borang Berbilang dengan PHP?
Mencegah Penyerahan Berbilang Borang dengan PHP
Dalam pembangunan web, adalah penting untuk melindungi daripada penyerahan berbilang borang apabila pengguna berulang kali mengklik pada serahan butang. Ini boleh membawa kepada hasil yang tidak diingini, seperti entri data pendua atau tingkah laku yang tidak dijangka. PHP menawarkan beberapa teknik untuk menghalang isu ini.
Satu pendekatan yang berkesan ialah menggunakan token bentuk unik. Apabila borang dipaparkan, token unik dijana dan disimpan dalam sesi. Apabila borang diserahkan, token disemak terhadap versi yang disimpan. Jika token sepadan, penyerahan borang diproses. Jika tidak, penyerahan ditolak, menghalang berbilang penyerahan.
Berikut ialah pelaksanaan PHP mudah:
session_start(); function getToken() { $token = sha1(mt_rand()); if (!isset($_SESSION['tokens'])) { $_SESSION['tokens'] = array($token => 1); } else { $_SESSION['tokens'][$token] = 1; } return $token; } function isTokenValid($token) { if (!empty($_SESSION['tokens'][$token])) { unset($_SESSION['tokens'][$token]); return true; } return false; } $postedToken = filter_input(INPUT_POST, 'token'); if (!empty($postedToken)) { if (isTokenValid($postedToken)) { // Process form } else { // Handle error } } $token = getToken();
<form method="post"> <fieldset> <input type="hidden" name="token" value="<?php echo $token; ?>" /> <!-- Add form content --> </fieldset> </form>
Untuk meningkatkan keselamatan, gabungkan pengesahan token ini dengan ubah hala pada penyerahan borang. Ini memastikan bahawa apabila pengguna menekan butang belakang, borang baharu dipaparkan dengan token baharu. Corak ini, dikenali sebagai POST / ubah hala / GET, seterusnya menghalang berbilang penyerahan dan mengekalkan keserasian ke belakang dan ke hadapan.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Penyerahan Borang Berbilang dengan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!