100分邀请高手解决:表单提交后,用js的goback后退后内容全没了

tryc 2009-09-18 10:58:37
表单提交后,用js的goback后退后内容全没了。
找了N多文章,没找到原因。

我加了个头,在firefox中可以后退了,在IE6、7、8中仍然不可以。
我加的header如下:
@header ( 'Cache-Control: store, no-cache, must-revalidate' );

哪位能解决的,一百分全送。当前只给了十分,怕没人能解决,浪费了,解决了一定加分送上

别告诉我什么在当前页面验证。绕过去的方法很多,我只想解决这个问题,不想绕过去!!!

有兴趣的可以下载下面页面去试试。


我把页面内容也贴出来吧:
---------------------a.php------------------------------
<?php
session_start();
$_SESSION['aaa'] = "aaaaaaaaaaaa";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="b.php">
<input type="text" name="textfield" id="textfield" />
<input type="submit" name="button" id="button" value="Submit" />
</form>
</body>
</html>
---------------------b.php------------------------------
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
window.onload = function() {
alert("go back <?=$_SESSION['aaa']?>");
window.history.go(-1);
}
</script>
</head>

<body>
</body>
</html>
...全文
919 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
axolo 2010-01-14
  • 打赏
  • 举报
回复
session_cache_limiter('private, must-revalidate');
要看情况使用的,会覆盖原始值的,估计楼主又得郁闷了
wzwen 2009-09-25
  • 打赏
  • 举报
回复
解决就好,接分吧
fxs_2008 2009-09-25
  • 打赏
  • 举报
回复
window.history.go(-1)

这个不行吗?

应该可以, 如果出错
showmsg() 后退里
里面不要用heaer()
tryc 2009-09-24
  • 打赏
  • 举报
回复
10楼,11楼符合偶的想法,达到提问的目的了。

还有个问题,我要是加header的话怎么加呢?
kxgsy163 2009-09-24
  • 打赏
  • 举报
回复
理论上讲 GET 方式可解决该问题!!!!。

顺便问句。为啥post不行!!!
tryc 2009-09-24
  • 打赏
  • 举报
回复
是不是我用session_cache_limiter就不需要用header设置头了吧?
babysc1 2009-09-20
  • 打赏
  • 举报
回复
session_cache_limiter('private, must-revalidate');

POST回填的是局部变量 还不如你用GET
yellow0323 2009-09-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 foolbirdflyfirst 的回复:]
逻辑不清,你想回退还保存原来值,不是应该提交后再把最新提交的表单值存session么?
怎么a.php就存session了?
================a.php==================
PHP code<?phpsession_start();$v=$_SESSION['aaa'];?><!DOCTYPE htmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>Untitled Document</title></head><body><form id="form1" name="form1" method="POST" action="b.php"><input type="text" name="textfield" id="textfield" value='<?php echo $v;?>'/><input type="submit" name="button" id="button" value="Submit"/></form></body></html>

=======================b.php=====================
PHP code<?phpsession_start();if($_POST){$_SESSION['aaa']=$_POST['textfield'];
}?><!DOCTYPE htmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>Untitled Document</title><script type="text/javascript">
window.onload=function() {
alert("go back <?=$_SESSION['aaa']?>");
window.history.go(-1);
}</script></head><body></body></html>

[/Quote]
xiaodan615 2009-09-19
  • 打赏
  • 举报
回复
给分小气
  • 打赏
  • 举报
回复
存到session里面啊。
LuciferStar 2009-09-19
  • 打赏
  • 举报
回复
用GET方式发送表单。
duxins 2009-09-18
  • 打赏
  • 举报
回复

session_cache_limiter('private, must-revalidate');
xiaoxue_427 2009-09-18
  • 打赏
  • 举报
回复
session_cache_limiter("private");

加上这一句应该可以的
用你的代码测试通过
leoz2z 2009-09-18
  • 打赏
  • 举报
回复
6楼正解!
dahaidao 2009-09-18
  • 打赏
  • 举报
回复
这样,Session_start()放别的页里吧,这样就可以了。
就不会把header给冲掉了。
go(-1)也没有能显示原来的内容了。
axolo 2009-09-18
  • 打赏
  • 举报
回复
session方案操作简单,但依赖性和冗余性比较强,对服务器性能没好处,毕竟POST回填的是局部变量。
foolbirdflyfirst 2009-09-18
  • 打赏
  • 举报
回复
逻辑不清,你想回退还保存原来值,不是应该提交后再把最新提交的表单值存session么?
怎么a.php就存session了?
================a.php==================
<?php
session_start();
$v = $_SESSION['aaa'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document </title>
</head>
<body>
<form id="form1" name="form1" method="POST" action="b.php">
<input type="text" name="textfield" id="textfield" value='<?php echo $v;?>'/>
<input type="submit" name="button" id="button" value="Submit" />
</form>
</body>
</html>


=======================b.php=====================
<?php 
session_start();
if($_POST){
$_SESSION['aaa'] = $_POST['textfield'];
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document </title>
<script type="text/javascript">
window.onload = function() {
alert("go back <?=$_SESSION['aaa']?>");
window.history.go(-1);
}
</script>
</head>

<body>

</body>
</html>

axolo 2009-09-18
  • 打赏
  • 举报
回复
你需要在服务器端保存提交的数据,当表单验证失败时把事先保存的数据填回表单。可以参照各大框架使用的表单控件。使用客户端cache不保险。我这里给个最简单的示例,以$_POST来保存提交数据,希望你能明白。
<form action="" method="post">
<input type="text" name="test" value="<?php echo $_POST['test']; ?>" />
<input type="submit" name="submit" />
</form>
xsir317 2009-09-18
  • 打赏
  • 举报
回复
window.history.go(-1)
tryc 2009-09-18
  • 打赏
  • 举报
回复
想看到原来表单的内容。
是session_start()把header设置的内容冲了,怎么处理呢?

session_start()输出的内容
---------- PHP ----------
Connection close
Date Fri, 18 Sep 2009 05:52:46 GMT
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET, PHP/5.2.9-2
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Content-Type text/html
加载更多回复(2)
企业智慧中台规划与建设总体方案是一个针对企业数字化转型需求而设计的综合性IT解决方案。该方案旨在构建一个集中、高效和灵活的中台架构,通过整合企业内外部的数据资源、业务流程和应用服务,为企业提供一个统一的数字化运营平台。在当前的商业环境下,企业面临着激烈的市场竞争和不断变化的客户需求。为了应对这些挑战,企业需要快速响应市场变化,提高运营效率,降低成本,并实现持续创新。因此,企业智慧中台的规划和建设成为了关键任务。该方案的核心思想是将企业的业务逻辑、数据管理和技术创新紧密结合起来,形成一个高度集成的智慧中台系统。通过构建标准化的数据模型和接口,实现数据的一致性和可访问性,同时提供丰富的数据析和挖掘工具,帮助企业发现潜在的商业价值和机会。此外,该方案还注重用户体验和业务敏捷性。通过构建灵活的应用开发框架和API接口,支持快速的业务迭代和定制化需求,满足不同部门和角色的个性化需求。同时,通过智能化的自动化流程和决策支持系统,提高企业的决策效率和准确性。总之,企业智慧中台规划与建设总体方案是一个全面而深入的IT解决方案,旨在帮助企业实现数字化转型,提升竞争力和创新能力。通过构建集中、高效和灵活

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧