国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

如何避免頁面刷新數據重復寫入數據庫

2024-05-04 21:52:45
字體:
來源:轉載
供稿:網友

如何避免頁面刷新數據重復寫入數據庫
當表單的數據是提交給本頁面處理并寫入數據庫時,點提交后,刷新頁面的話使數據重復寫入數據庫。網上搜索一下,發現了不少的解決方案:

一、把一頁面分開為兩個,數據提交給另一個頁面處理,之后再跳到輸入頁面。
優點:避免了刷新的影響,并可連續提交數據。
缺點:當用戶在還沒有完整的填寫表單時,點了提交。若不執行數據入庫操作又要保留用戶之前輸入的內容,用php來實現有些困難或說不方便。(當然,用js實現可能比較容易。在此約定本文只是從php的角度評價,研究php的運用)
*總的說來,這是一種不錯的解決方案。

二、在session中保存變量
_SESSION['submit']=false
提交后 改為true
檢測變量
if (_SESSION['submit']=true){
echo "text";
exit();
}

優點:避免了刷新的影響,并且只有一個頁面,沒有第一種方法的缺點
缺點:只能提交一次,不能連續提交數據。

*有可取之處,但適用面太窄。


三、在數據入庫之前執行一次驗證查詢,看數據庫里是否已經存在了相同的記錄,由此來決定是否寫入數據。

優點:沒有了前兩種方法的缺點。
缺點:代碼不精簡,操作繁瑣。再說有時并不排斥保存完全相同的信息。

*實現代價太高,副作用過大。


有沒有沒整合三種方法優點不要其缺點的方法呢?有!下面就是一種不錯的解決方案,與大家分享:

///////////////////////////////////////////////////////
<?php
session_start();
if(!isset(_SESSION['h'])){
_SESSION['h']=1;
}
_SESSION['h']++;

if(isset(_POST['h']) and _SESSION['h']==_POST['h']){
echo '<font color=green >您點提交按鈕了</font>';
}else{
echo '<font color=red>您沒有點提交</font>';
}

?>

<form action="im.php" method=post>
b:<input type="text" name=b ><P>
<input type="hidden" name=h value=<?php echo _SESSION['h']+1;?>>
c:<input type="text" name=c ><P>
d:<input type="text" name=d ><P>
<input type="submit" value=提交>

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石渠县| 图木舒克市| 柯坪县| 珲春市| 迁安市| 嘉义县| 永昌县| 池州市| 兴国县| 瑞金市| 金坛市| 修文县| 美姑县| 电白县| 广昌县| 井陉县| 马关县| 桂林市| 远安县| 红安县| 兖州市| 朝阳县| 定日县| 瑞安市| 方城县| 华坪县| 景东| 吉安市| 珠海市| 威信县| 松潘县| 彰化县| 屯门区| 绥阳县| 寿光市| 长岭县| 呼和浩特市| 灵台县| 荥阳市| 金川县| 涟源市|