note 64538 deleted from function.header by danbrown
| From: | danbrown@php.net | Date: | Sun, 23 Jan 2011 17:35:56 +0000 |
| Subject: | note 64538 deleted from function.header by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-176217@lists.php.net to get a copy of this message | ||
Note Submitter: hervard at gmail dot com
----
When using HTML forms, using the browser's back button will sometimes display a message
regarding using cached data, and will ask you to refresh the page. This can be very disconcerting
for some users, as they might not know whether to hit Refresh or not.
To force pages to always load the data that was entered in the form prior to hitting a submit
button, and prevent the browser's cache message from displaying, use the following code:
<?php
// Original code found at http://www.mnot.net/cache_docs/
header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * -1;
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . "
GMT";
header($ExpStr);
?>
This will tell the browser that the page will expire in one day, and the cached form data will be
used without prompting the user at all.
I have tested this in Internet Explorer 6, Firefox 1.5, and Opera 8.51, and it works as intended. I
have tried other cache-control and expiry variants, but they either do not work, or do not work in
every browser. This code appears to be a winner.