Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencegah Penyerahan Borang Berbilang dalam PHP?
Penyerahan borang kadangkala boleh dicetuskan secara tidak sengaja beberapa kali berturut-turut, yang membawa kepada tingkah laku yang tidak diingini dan ketidakkonsistenan data. Keadaan ini boleh timbul disebabkan oleh pelbagai faktor, seperti butang klik berbilang atau pemprosesan bentuk perlahan. PHP menyediakan teknik untuk menghalang berbilang penyerahan sedemikian, memastikan integriti data.
Untuk memerangi berbilang penyerahan, pendekatan yang digunakan secara meluas melibatkan penggunaan token yang dijana setiap kali borang dipaparkan. Token ini kemudiannya diserahkan bersama borang dan disahkan pada bahagian pelayan. Faedah penting pendekatan ini terletak pada potensinya untuk mengurangkan kedua-dua serangan CSRF (Cross-Site Request Forgery) dan serangan semula.
Contoh di bawah menunjukkan penciptaan yang unik token untuk setiap paparan borang, bersama-sama dengan pengesahannya semasa penyerahan borang.
<?php session_start(); /** * Generates a unique token for the form * @return string The token */ function getToken(){ $token = sha1(mt_rand()); if(!isset($_SESSION['tokens'])){ $_SESSION['tokens'] = array($token => 1); } else{ $_SESSION['tokens'][$token] = 1; } return $token; } /** * Validates the token and removes it from the list of valid tokens * @param string $token The token * @return bool Validation status */ function isTokenValid($token){ if(!empty($_SESSION['tokens'][$token])){ unset($_SESSION['tokens'][$token]); return true; } return false; } // Check if a form has been submitted $postedToken = filter_input(INPUT_POST, 'token'); if(!empty($postedToken)){ if(isTokenValid($postedToken)){ // Process form } else{ // Handle error } } // Get a token for the currently displayed form $token = getToken(); ?> <form method="post"> <fieldset> <input type="hidden" name="token" value="<?php echo $token; ?>"/> <!-- Form content --> </fieldset> </form>
Menggabungkan pendekatan berasaskan token dengan ubah hala meningkatkan pengalaman pengguna dengan memastikan tingkah laku navigasi ke belakang dan ke hadapan yang betul. Dengan melaksanakan corak reka bentuk POST / ubah hala / GET, anda boleh menghalang penyerahan semula secara tidak sengaja apabila pengguna mengklik butang belakang atau memuat semula halaman.
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Penyerahan Borang Berbilang dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!