2013-02-13 86 views
0

我在這裏嘗試找到一些可能非常簡單的解決方案。在HTML/PHP中啓用表單緩存

我在內部網上有一組報告(不可訪問外部世界),每個報告都有一個輸入表單,其中有一堆HTML輸入可以改變報告數據。

問題在於當您從報表中回到表單時,表單被重置爲原始狀態。我希望它緩存(記住HTML輸入變量),我能找到的就是如何關閉緩存,我想要它!我寧願不用$ _SESSION和$ _COOKIE存儲來做到這一點,因爲我有120個報告,每個報告大概有10個左右的輸入,所以它將永久存儲每個人並在刷新時重新加載變量。

我不是服務器管理員,但我相信我們正在運行Apache 2.2 Web服務器。這些都是基於PHP/HTML的頁面。任何建議都會很棒!

這不是與我的瀏覽器,因爲其他形式正在緩存。我更關注服務器上的哪些模塊需要被激活以允許緩存以及我應該在表單的標題中放置什麼樣的提示以允許緩存。內部網通過代理運行,所以我想我需要緩存控制才能公開。

編輯:

當我運行表單頁面,HTTP標頭告訴我這個,我覺得應該改變:

(下響應頭)

X-Powered-By: PHP/5.3.3 
Via: *[REMOVED]* 
Server: Apache/2.2.3 (Red Hat) 
Proxy-Connection: Keep-Alive 
Pragma: no-cache 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Date: Wed, 13 Feb 2013 23:33:32 GMT 
Content-Type: text/html; charset=UTF-8 
Content-Length: 5191 
Connection: Keep-Alive 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 

我有一種感覺我需要更改Cache-Control和Pragma值。任何人都知道如何實現這個目標?

+2

這是與瀏覽器相關的問題。如果它記住輸入中的數據或不記錄,則取決於瀏覽器。 – 2013-02-13 23:14:07

+0

hmmm ...爲什麼我的瀏覽器緩存來自舊站點的數據而不是新的數據? – elzaer 2013-02-13 23:17:37

+0

這可能是因爲網頁明確強制瀏覽器不使用該數據。簡單的例子是通過javasript設置'input.value =「」',但也可能會發送一些頭文件(我不知道任何)。 – 2013-02-13 23:24:38

回答

4

試圖將這些報頭到頁面的頂部:

header("Cache-Control: private, max-age=10800, pre-check=10800"); 
header("Pragma: private"); 
header("Expires: " . date(DATE_RFC822,strtotime("+2 day"))); 

注意:如果表單提交和POST數據到第二個頁面,你可能希望把它在兩個頂部頁面。另外,確保代碼在任何session_start()之後;如果你正在使用會話。

+0

這樣做的訣竅:)非常感謝你 – elzaer 2013-02-14 02:25:18

1

嘗試將輸入的autocomplete屬性設置爲on。

<input name="myinput" autocomplete="on" type="text"> 
+0

自動完成不適用於checboxes,收音機框,選擇框等。不幸的是,沒有用於自動完成的文本字段。 – elzaer 2013-02-13 23:39:13