【解决】PHP传送表单资料时,避免重复送出资料执行
当使用表单(from)传送资料进行处理后,若使用者重新整理(F5)页面
会导致网页再重复执行一次表单送出的动作,因此需在送出时进行判断
以下提供判断程式码及说明
一、于表单中加入一个隐藏变数,作为传送判断值使用
<form method="post" action="receive.php">
<input type="hidden" name="decide" value="<? echo $_SESSION['decide']; ?>">
...
</fomr>
二、设定一个SESSION值与表单传来的值判断是否成立,若符合,接收端则进行表单资料处理;反之,若不是透过表单按钮提交资料,则不进行动作
【receive.php】
//判断有无SESSION值,若没有就设定一个SESSION并给予预设值
if(!isset($_SESSION['decide'])){
$_SESSION['decide'] = 0;
}
//若尚未处理过,在送出表单时,SESSION值会为0,因此在判断时(0=0)会成立,并继续处理表单资料
if ($_SESSION['decide']==$_POST['decide']) {
//正常透过表单按钮送出资料,则将SESSION的值+1,并处理表单资料
$_SESSION['decide'] += 1;
....
//处理表单资料
}
若透过表单按扭送出资料后,又重新整理页面,会再将SESSION+1,导致判断时(2!=1)不进行处理直接跳出
透过以上制订的规则可预防重新整理网页造成表单资料重复处理的状况发生~
【如果这篇文章刚好有帮助到你,希望能帮我按个赞给我个鼓励】
【这样小小的一个动作,对我来说就是给我最大的回礼】