如何避免頁面刷新數(shù)據(jù)重復(fù)寫入數(shù)據(jù)庫_PHP教程
推薦:解析PHP漢字驗(yàn)證碼的實(shí)現(xiàn)?php /* * 文件:chinesechar.php * 作用:漢字?jǐn)?shù)據(jù)儲存 * 作者:PHP實(shí)戰(zhàn)群:33918040 - 魚尾唯一 * 網(wǎng)址:http://bbs.ailf.cn/ http://www.fishwei.com/ * 特注:版權(quán)所有轉(zhuǎn)載注明出處!有付出才會(huì)有收獲! */ ChineseChar = array(人,出,來,友,學(xué),孝,
如何避免頁面刷新數(shù)據(jù)重復(fù)寫入數(shù)據(jù)庫
當(dāng)表單的數(shù)據(jù)是提交給本頁面處理并寫入數(shù)據(jù)庫時(shí),點(diǎn)提交后,刷新頁面的話使數(shù)據(jù)重復(fù)寫入數(shù)據(jù)庫。網(wǎng)上搜索一下,發(fā)現(xiàn)了不少的解決方案:
一、把一頁面分開為兩個(gè),數(shù)據(jù)提交給另一個(gè)頁面處理,之后再跳到輸入頁面。
優(yōu)點(diǎn):避免了刷新的影響,并可連續(xù)提交數(shù)據(jù)。
缺點(diǎn):當(dāng)用戶在還沒有完整的填寫表單時(shí),點(diǎn)了提交。若不執(zhí)行數(shù)據(jù)入庫操作又要保留用戶之前輸入的內(nèi)容,用php來實(shí)現(xiàn)有些困難或說不方便。(當(dāng)然,用js實(shí)現(xiàn)可能比較容易。在此約定本文只是從php的角度評價(jià),研究php的運(yùn)用)
*總的說來,這是一種不錯(cuò)的解決方案。
二、在session中保存變量
_SESSION['submit']=false
提交后 改為true
檢測變量
if (_SESSION['submit']=true){
echo "text";
exit();
}
優(yōu)點(diǎn):避免了刷新的影響,并且只有一個(gè)頁面,沒有第一種方法的缺點(diǎn)
缺點(diǎn):只能提交一次,不能連續(xù)提交數(shù)據(jù)。
*有可取之處,但適用面太窄。
三、在數(shù)據(jù)入庫之前執(zhí)行一次驗(yàn)證查詢,看數(shù)據(jù)庫里是否已經(jīng)存在了相同的記錄,由此來決定是否寫入數(shù)據(jù)。
優(yōu)點(diǎn):沒有了前兩種方法的缺點(diǎn)。
缺點(diǎn):代碼不精簡,操作繁瑣。再說有時(shí)并不排斥保存完全相同的信息。
*實(shí)現(xiàn)代價(jià)太高,副作用過大。
有沒有沒整合三種方法優(yōu)點(diǎn)不要其缺點(diǎn)的方法呢?有!下面就是一種不錯(cuò)的解決方案,與大家分享:
///////////////////////////////////////////////////////
<?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 >您點(diǎn)提交按鈕了</font>';
}else{
echo '<font color=red>您沒有點(diǎn)提交</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=提交>
分享:php 截取中文?php ?php //截取中文字符串 function mysubstr(str, start, len) { tmpstr = ; strlen = start + len; for(i = 0; i strlen; i++) { if(ord(substr(str, i, 1)) 0xa0) { tmpstr .= substr(str, i, 2); i++; } else tmpstr .= substr(str, i, 1); } return
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-如何避免頁面刷新數(shù)據(jù)重復(fù)寫入數(shù)據(jù)庫。