當使用表單(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)不進行處理直接跳出

 

透過以上制訂的規則可預防重新整理網頁造成表單資料重複處理的狀況發生~

 

【如果這篇文章剛好有幫助到你,希望能幫我按個讚給我個鼓勵】

【這樣小小的一個動作,對我來說就是給我最大的回禮】

 

  

 

arrow
arrow

    Randy 發表在 痞客邦 留言(1) 人氣()