我有网页A.用户点击表单提交数据,然后将他带到网页B.当他点击后退按钮时,我需要从服务器刷新网页A,而不是从缓存加载。我有这个:<meta http-equiv="expires" content="0">
但它似乎没有用。我也尝试在页面B上设置变量(通过php设置会话变量)然后在页面A上检查它并根据它的存在刷新(或不刷新)。这种做法似乎也有效。基本代码是:
第A页:
<?php
if(isset($_SESSION['reloadPage'])) {
unset($_SESSION['reloadPage']);
echo'
<script>
window.location.replace("/****/****/*****.php");
</script>
';
}
?>
在第B页:
$_SESSION['reloadPage'] = 1;
使用PHP解决方案,它只是不断尝试在永无止境的循环中刷新页面。我的逻辑缺少什么?这是正确的方法吗?
修改 经过进一步调查,当您告诉浏览器不缓存页面时,这是否会强制完整的服务器端刷新?这就是我需要的。页面的完整服务器端刷新。
答案 0 :(得分:5)
好吧试试这个:
<?php
if(!session_id()) {
@session_start();
}
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
if(isset($_SESSION['form_submitted'])) {
unset($_SESSION['form_submitted']);
header('Location: ?' . uniqid());
#header('Refresh: 0');
}
?>
您需要在第2页设置$ _SESSION ['form_submitted'] = true。
答案 1 :(得分:2)
尝试所有三个:
<meta http-equiv="cache-control" content="no-cache"> <!-- tells browser not to cache -->
<meta http-equiv="expires" content="0"> <!-- says that the cache expires 'now' -->
<meta http-equiv="pragma" content="no-cache"> <!-- says not to use cached stuff, if there is any -->
答案 2 :(得分:1)
<?php
session_start();
if(isset($_SESSION['reloadPage'])) {
unset($_SESSION['reloadPage']);
//no outputting code above header
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Location: http://www.mypage.com/");
}
?>
答案 3 :(得分:1)
我知道这是一个老问题并且已经有了答案(不是从服务器刷新)。所以我想用jQuery分享一个解决方案。
$('#back-button').click(function(){
setTimeout(location.reload(true), 1000);
});
说明:
单击后退按钮时,{1}将在1秒(1000毫秒)后触发。然后,页面将从服务器重新加载,setTimeout
中的参数为reload
。
如果您将true
放在true
内,它将从服务器重新加载,而如果您放置reload
,它将从缓存重新加载。来源w3schools。
答案 4 :(得分:0)
你的JavaScript应该......
window.location = "/****/****/*****.php"
我认为应该修复你的循环。
答案 5 :(得分:0)
<?php
session_start();
if(isset($_SESSION['reloadPage'])) {
unset($_SESSION['reloadPage']);
echo'
<script>
window.location.replace("/****/****/*****.php");
</script>
';
}
?>