探讨PHP表单重复提交的预防法则
当用户单击“提交”按钮后,该按钮将变为灰色不可用状态。
上面的例子中使用OnClick事件检测用户的提交状态,如果单击了“提交”按钮,该按钮立即置为失效状态,用户不能单击按钮再次提交。
还有一个方法,也是利用JavaScript的功能,但是使用的是OnSubmit()方法,如果已经提交过一次表单,将立即弹出对话框,代码如下:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> </span><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"hidden"</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"originator"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"=$code?>"</span><span class="tag">></span><span> </span></span></span></li> <li><span>在接收页面的PHP代码如下: </span></li> <li class="alt"><span class="tag"><span> ?phpsession_start();if(isset($_POST['originator'])) { </span></span></li> <li><span>if($_POST['originator'] == $_SESSION['code']){// 处理该表单的语句,省略 </span></li> <li class="alt"><span>}else{ </span></li> <li><span>echo ‘请不要刷新本页面或重复提交表单!’; </span></li> <li class="alt"><span>} </span></li> <li> <span>}</span><span class="tag">?></span><span> </span> </li> </ol>
在上例中,如果用户已经单击“提交”按钮,该脚本会自动记录当前的状态,并将submitcount变量自加
1,当用户试图再次提交时,脚本判断submitcount变量值非零,提示用户已经提交,从而避免重复提交表单。
2.使用Cookie处理
使用Cookie记录表单提交的状态,根据其状态可以检查是否已经提交表单,请见下面的代码:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> ?php </span></span></span></li> <li><span>if(isset($_POST['go'])){setcookie("tempcookie","",time()+30); </span></li> <li class="alt"><span>header("Location:".$_SERVER[PHP_SELF]);exit(); </span></li> <li><span>} if(isset($_COOKIE["tempcookie"])){ </span></li> <li class="alt"><span>setcookie("tempcookie","",0);echo "您已经提交过表单"; </span></li> <li> <span>}</span><span class="tag">?></span><span> </span> </li> </ol>
如果客户端禁止了Cookie,该方法将不起任何作用,这点请注意。
3.使用Session处理
利用PHP的Session功能,也能避免PHP表单重复提交。Session保存在服务器端,在PHP运行过程中可以改变Session变量,下次访问这个变量时,得到的是新赋的值,所以,可以用一个Session变量记录表单提交的值,如果不匹配,则认为是用户在重复提交,请见如下代码:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> ?php </span></span></span></li> <li><span>session_start();//根据当前SESSION生成随机数 </span></li> <li class="alt"> <span>$</span><span class="attribute">code</span><span> = </span><span class="attribute-value">mt_rand</span><span>(0,1000000); </span> </li> <li><span>$_SESSION['code'] = $code; </span></li> <li class="alt"> <span class="tag">?></span><span> </span> </li> </ol>
在页面表单上将随机数作为隐藏值进行传递,代码如下:
<ol class="dp-xml"><li class="alt"><span><span class="tag"><span> </span><span class="tag-name">input</span><span> </span><span class="attribute">type</span><span>=</span><span class="attribute-value">"hidden"</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"originator"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">""</span><span class="tag">></span><span> </span></span></span></li></ol>
在接收页面的PHP代码如下:
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><span> ?php </span></span></span></li> <li><span>session_start(); </span></li> <li class="alt"><span>if(isset($_POST['originator'])) { </span></li> <li><span>if($_POST['originator'] == <br>$_SESSION['code']){ </span></li> <li class="alt"><span>// 处理该表单的语句,省略 </span></li> <li><span>}else{ </span></li> <li class="alt"><span>echo ‘请不要刷新本页面或<br>重复提交表单!’; </span></li> <li><span>} </span></li> <li class="alt"> <span>}</span><span class="tag">?></span><span> </span> </li> </ol>
4.使用header函数转向
除了上面的PHP表单重复提交的预防方法之外,还有一个更简单的方法,那就是当用户提交表单,服务器端处理后立即转向其他的页面,代码如下所示。
<ol class="dp-xml"> <li class="alt"><span><span>if (isset($_POST['action']) <br>&& $_POST['action'] == 'submitted') { </span></span></li> <li><span>//处理数据,如插入数据后,立即转向到其他页面 </span></li> <li class="alt"><span>header('location:submits_success.php'); </span></li> <li><span>} </span></li> </ol>
以上就是PHP表单重复提交的几个预防方法的介绍。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.
