Simplest fix is to turn off or override browser cacheing. IE will not reload from the server untill the local copy expires, and without expiry dates and modified dates in the stored copies, this would be never.
Use the following at the top of your page. Note that this code must be the first thing in the page
<?php //index.php
//disable all browser caching MUST BE FIRST LINES WITH NO PRECEEDING SPACES ETC
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
// include neccessary files
require_once './db.php';
require_once './common.php';
require_once './accesscontrol.php';
?>
Of course, people who already have a stored copy of your page are not going to get this. Even if they hit the refresh button to get your new page with its cache override, the old page will not be overwritten (no-cache) and still will not have expired(this is a bug in IE). They would need to clear their cache to get rid of your old pages, or keep on clicking refresh.
I'm sure there is a way of sending a header that forces a reload of your page, and if you use a short expiry date you will purge old copies.
Basically for dynamic web pages using the above script from the very beginning is a must. Even then, some proxy servers will ignore the headers and still cache your dynamic pages.