表單提交錯(cuò)誤后返回內(nèi)容消失問(wèn)題的解決方法(PHP網(wǎng)站)
表單提交錯(cuò)誤后返回內(nèi)容消失怎么辦吶,今天就來(lái)分析解決一下這個(gè)問(wèn)題。
狀況概述:
做填寫表單信息提交的時(shí)候會(huì)碰到一個(gè)問(wèn)題就是當(dāng)用戶填寫并提交表單后,程序判斷不符合要求并返回,返回之后之前填寫的表單信息會(huì)被清空了的情況。如果填寫的信息量少還無(wú)所謂,如果填寫的信息量比較多,這會(huì)直接打擊到填寫信息的人的良好心情。因此解決表單提交錯(cuò)誤返回后填寫的內(nèi)容消失的問(wèn)題是一個(gè)提高用戶體驗(yàn)度的迫在眉睫的問(wèn)題。
對(duì)于這種問(wèn)題,綜合總結(jié)了大概有下面幾種情況:
(1)頁(yè)面使用了session_start函數(shù),這個(gè)函數(shù)有個(gè)特點(diǎn)就是會(huì)強(qiáng)制當(dāng)前頁(yè)面不被刷新,解決方法就是在此函數(shù)后加上下面這段代碼:
header("Cache-control:private");//注意在本行之前你的PHP程序不能有任何輸出
還有其他的幾種解決方法是在session_start前加上
session_cache_limiter('nocache'); //清空表單 session_cache_limiter('private'); //不清空表單,只在session生效期間 session_cache_limiter('public'); //不清空表單,如同沒(méi)使用session一般
上面的設(shè)置session會(huì)使seesion出現(xiàn)緩存的現(xiàn)象,從而導(dǎo)致當(dāng)你應(yīng)用到session的地方會(huì)出現(xiàn)session信息不能更新的問(wèn)題,鑒于這個(gè)原因,本文提出下面幾種其他的解決辦法。
(2)使用Header方法設(shè)置消息頭Cache-control,在頁(yè)面加入下段代碼:
header('Cache-control: private, must-revalidate'); //支持頁(yè)面回跳,注意本行之前不能有任何輸出
(3)使用session_cache_limiter方法,在頁(yè)面加入下段代碼:
session_cache_limiter('private, must-revalidate'); //注意要寫在session_start方法之前
下面對(duì)Cache-Control消息頭域做一下補(bǔ)充說(shuō)明:
Cache-Control指定請(qǐng)求和響應(yīng)遵循的緩存機(jī)制。在請(qǐng)求消息或響應(yīng)消息中設(shè)置Cache-Control并不會(huì)修改另一個(gè)消息處理過(guò)程中的緩存處理過(guò)程。請(qǐng)求時(shí)的緩存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if- cached,響應(yīng)消息中的指令包括public、private、no-cache、no-store、no-transform、must- revalidate、proxy-revalidate、max-age。各個(gè)消息中的指令含義如下:
Public:指示響應(yīng)可被任何緩存區(qū)緩存。
Private:指示對(duì)于單個(gè)用戶的整個(gè)或部分響應(yīng)消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當(dāng)用戶的部分響應(yīng)消息,此響應(yīng)消息對(duì)于其他用戶的請(qǐng)求無(wú)效。
no-cache:指示請(qǐng)求或響應(yīng)消息不能緩存
no-store:用于防止重要的信息被無(wú)意的發(fā)布。在請(qǐng)求消息中發(fā)送將使得請(qǐng)求和響應(yīng)消息都不使用緩存。
max-age:指示客戶機(jī)可以接收生存期不大于指定時(shí)間(以秒為單位)的響應(yīng)。
min-fresh:指示客戶機(jī)可以接收響應(yīng)時(shí)間小于當(dāng)前時(shí)間加上指定時(shí)間的響應(yīng)。
max-stale:指示客戶機(jī)可以接收超出超時(shí)期間的響應(yīng)消息。如果指定max-stale消息的值,那么客戶機(jī)可以接收超出超時(shí)期指定值之內(nèi)的響應(yīng)消息。
讀完這篇文章大家再遇到類似問(wèn)題就可以徹底解決了,特別提醒的是這個(gè)解決方法僅針對(duì)php網(wǎng)站,可記住了。
- php過(guò)濾表單提交的html等危險(xiǎn)代碼
- php實(shí)現(xiàn)過(guò)濾表單提交中html標(biāo)簽的方法
- PHP對(duì)表單提交特殊字符的過(guò)濾和處理方法匯總
- php 防止表單重復(fù)提交兩種實(shí)現(xiàn)方法
- php表單加入Token防止重復(fù)提交的方法分析
- AJAX PHP無(wú)刷新form表單提交的簡(jiǎn)單實(shí)現(xiàn)(推薦)
- php防止用戶重復(fù)提交表單
- php實(shí)現(xiàn)表單多按鈕提交action的處理方法
- 淺談php提交form表單
- php表單敏感字符過(guò)濾類
- PHP實(shí)現(xiàn)表單提交時(shí)去除斜杠的方法
相關(guān)文章
PHP內(nèi)部實(shí)現(xiàn)打亂字符串順序函數(shù)str_shuffle的方法
這篇文章主要給大家介紹了關(guān)于PHP內(nèi)部實(shí)現(xiàn)打亂字符串順序函數(shù)str_shuffle的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02PHP中的自動(dòng)加載操作實(shí)現(xiàn)方法詳解
這篇文章主要介紹了PHP中的自動(dòng)加載操作實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了php自動(dòng)加載的概念、原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-08-08php實(shí)現(xiàn)可用于mysql,mssql,pg數(shù)據(jù)庫(kù)操作類
這篇文章主要介紹了php實(shí)現(xiàn)可用于mysql,mssql,pg數(shù)據(jù)庫(kù)操作類,以類的形式封裝了對(duì)mysql,mssql,pg三種數(shù)據(jù)庫(kù)的操作,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12PHP中Socket連接及讀寫數(shù)據(jù)超時(shí)問(wèn)題分析
這篇文章主要介紹了PHP中Socket連接及讀寫數(shù)據(jù)超時(shí)問(wèn)題,分析了Socket連接的相關(guān)設(shè)置與使用技巧,需要的朋友可以參考下2016-07-07PHP運(yùn)行時(shí)強(qiáng)制顯示出錯(cuò)信息的代碼
PHP運(yùn)行時(shí)強(qiáng)制顯示出錯(cuò)信息的代碼,需要的朋友可以參考下。2011-04-04php記錄代碼執(zhí)行時(shí)間(實(shí)現(xiàn)代碼)
本篇文章是對(duì)php記錄代碼執(zhí)行時(shí)間的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07PHP中關(guān)鍵字interface和implements詳解
PHP 類是單繼承,也就是不支持多繼承,當(dāng)一個(gè)類需要多個(gè)類的功能時(shí),繼承就無(wú)能為力了,為此 PHP 引入了類的接口技術(shù)。下面這篇文章主要跟大家介紹了關(guān)于PHP中關(guān)鍵字interface和implements的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06php數(shù)組函數(shù)序列之krsort()- 對(duì)數(shù)組的元素鍵名進(jìn)行降序排序,保持索引關(guān)系
krsort() 函數(shù)將數(shù)組按照鍵逆向排序,為數(shù)組值保留原來(lái)的鍵??蛇x的第二個(gè)參數(shù)包含附加的排序標(biāo)志2011-11-11解析二進(jìn)制流接口應(yīng)用實(shí)例 pack、unpack、ord 函數(shù)使用方法
本篇文章是對(duì)二進(jìn)制流接口應(yīng)用實(shí)例 pack、unpack、ord 函數(shù)使用方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06