PHP表單提交錯誤後返回內容消失問題

2021-08-26 14:08:11 字數 1677 閱讀 9360

今日發現乙個問題,使用者如果提交表單後,不符合要求返回,表單資訊老是沒有。把我鬱悶壞了,我明明記得最開始做此功能的時候,是可以恢復表單狀態的。經過網上查詢,原來是由於我使用了session_start函式的原因,這個函式會強制當前頁面不被重新整理,解決方法就是在此函式後加入 header("cache-control: private"),同時注意在本行之前你的php程式不能有任何輸出。

還有基於session的解決方法,在session_start前加上

session_cache_limiter('nocache');// 清空表單

session_cache_limiter('private');//不清空表單,只在session生效期間

session_cache_limiter('public');//不清空表單,如同沒使用session一般

不過從別人部落格上看到如果直接設定session會使seesion出現cache的現象,從而導致當你應用到session的地方會出現session資訊不能更新的問題。

記錄於此,省得下次忘了。這也提醒了我,該時候花個時間好好的把php手冊當教科書一樣從頭到尾最少看一遍。

補充:第一,使用header方法設定訊息頭cache-control

1

header('

cache-control: private, must-revalidate

');

//支援頁面回跳

第二,使用session_cache_limiter方法

//注意要寫在session_start方法之前

session_cache_limiter('private, must-revalidate');

補充:cache-control訊息頭域說明

cache-control指定請求和響應遵循的快取機制。在請求訊息或響應訊息中設定cache-control並不會修改另乙個訊息處理過程中的快取處理過程。請求時的快取指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if- cached,響應訊息中的指令包括public、private、no-cache、no-store、no-transform、must- revalidate、proxy-revalidate、max-age。各個訊息中的指令含義如下:

public指示響應可被任何快取區快取。

private指示對於單個使用者的整個或部分響應訊息,不能被共享快取處理。這允許伺服器僅僅描述當使用者的部分響應訊息,此響應訊息對於其他使用者的請求無效。

no-cache指示請求或響應訊息不能快取

no-store用於防止重要的資訊被無意的發布。在請求訊息中傳送將使得請求和響應訊息都不使用快取。

max-age指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。

min-fresh指示客戶機可以接收響應時間小於當前時間加上指定時間的響應。

max-stale指示客戶機可以接收超出超時期間的響應訊息。如果指定max-stale訊息的值,那麼客戶機可以接收超出超時期指定值之內的響應訊息。

zz:

PHP表單提交錯誤後返回內容消失問題

今日發現乙個問題,使用者如果提交表單後,不符合要求返回,表單資訊老是沒有。把我鬱悶壞了,我明明記得最開始做此功能的時候,是可以恢復表單狀態的。經過網上查詢,原來是由於我使用了session start函式的原因,這個函式會強制當前頁面不被重新整理,解決方法就是在此函式後加入 header cache...

表單提交錯誤回退時保留表單內容

使用者填寫了一大堆的表單資訊之後提交給伺服器,出現提交資訊錯誤,結果伺服器返回到原頁面,填寫的表單資訊都沒有了,這樣的使用者體驗非常差。二 原頁面保留表單資料 方法1 php在開啟session start 之前呼叫 session cache limiter private,must revali...

Git提交錯誤後如何回退

git reset commit 在使用git的時候需要維護乙個自己的分支模型,推薦使用 總體說來有一下兩點 下面這個是我們專案中的網路提交圖 這只是簡單介說了一下分支模型,具體的介紹可以參考上面給出的鏈結。如果在提交的過程中直接在master上做了修改,或者不小心把master合併到了develo...