很多時會因為用戶按了重新整理(F5)引致重複送出表單
如重複留言等問題
當然使用AJAX可以解決這個問題
但現在我介紹一個比較簡單的方式解決
在表單和SESSION中加插一個隨機隱藏數值來定義是否重複送出
請從下方繼續閱讀觀看全文
inc.function.php
<?php
//隨機產生數字
function formResubmitGen(){
global $_SESSION;
$_SESSION["formHash"] = rand(10000, getrandmax());
}
//輸出Hidden表單
function formResubmitPrint(){
global $_SESSION;
if($_SESSION["formHash"]=="") formResubmitGen();
echo '<input name="formHash" type="hidden" value="'.$_SESSION["formHash"].'" />';
}
//輸出檢查
function formResubmitCheck(){
global $_SESSION, $_POST;
if($_SESSION["formHash"]==$_POST["formHash"]){
$_SESSION["formHash"] = "";
return true;
}
return false;
}
?>
guestbook.php
<?php
//必須開啟SESSION
@session_start();
//引用上面的函式
include("inc.function.php");
//檢查表單輸入及是否重複
if($_POST["name"] && $_POST["comment"] && formResubmitCheck()){
$db->insert($_POST,tblComment);
}
?>
參考文獻:http://b.lineage.idv.hk/300/teach-php-reflesh-form-resubmit