中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > PHP > PHP综合
怎样让浏览器后退时不显示网页过期,而显示原先的页面
作者:未知 时间:2005-09-13 19:41 出处:ChinaUnix.net 责编:chinaitpower
              摘要:怎样让浏览器后退时不显示网页过期,而显示原先的页面

http://127.0.0.1/site/member_register.php?job=agreement&membertype=p

一个会员注册链接,出现一个注册表格,提交后提示错误,然后就需要用户返回,但是我按返回后就出现

警告: 网页已经过期 您申请的网页是用表单中提交的信息创建的。该网页已失效。由于有安全预警功能,Internet Explorer 不会自动再次提交您的信息。 

要重新提交信息并查看该网页,请单击刷新按钮。 


这样就势必要注册人重新填写一遍表格,我以前通过perl编程好像不会有这种问题,为什么php就会这样呢?

关键问题在于我做的有些页面它不会这样,有些就一定需要刷新

有办法控制吗?比如通过发送网页头?[/i]

 redfox 回复于:2003-09-01 11:07:50
返回用javascript:window.location=''

 echomeng 回复于:2003-09-01 12:06:27
[quote:35421203b3="redfox"]返回用javascript:window.location=''[/quote:35421203b3]     


这个跟按后退是一样的,为了证实我也试了,还是需要刷新才可以。

 redfox 回复于:2003-09-01 12:21:57
这样也要刷新???

 kevinlei 回复于:2003-09-01 17:54:48
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

你的程序里是不是有类似的东西?

如果是,就删这一句
如果不是,那么请问你的服务器是APACHE 还是 IIS?

 redfox 回复于:2003-09-02 07:54:46
window.location 和 返回当然是不一样的, window.location 等于重新载入一个页面,不可能还在提交状态。

 echomeng 回复于:2003-09-02 10:44:16
[quote:40e80743d9="kevinlei"]header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

你的程序里是不是有类似的东西?

如果是,就删这一句
如果不是,那么请问你的服务器是APACHE 还是 IIS?[/quote:40e80743d9]     

程序是我编的,没有加额外的任何header命令
服务器是linux8 + apache
谢谢!

 echomeng 回复于:2003-09-02 10:45:23
[quote:6b43d38fb9="redfox"]window.location 和 返回当然是不一样的, window.location 等于重新载入一个页面,不可能还在提交状态。[/quote:6b43d38fb9]  

我的意思是,这样别人表单就要重填了!
而且只能通过js实现,如果这样的话我用header发送location也是一样的。

 redfox 回复于:2003-09-02 12:54:53
可以用cookie或session来保存用户信息。

 wubai 回复于:2003-09-02 15:58:50
在填写信息页面加上这句话试试看:


session_cache_limiter("private");



The cache limiter is reset to the default value stored in session.cache_limiter at request startup time. Thus, you need to call session_cache_limiter() for every request (and before session_start() is called).

 echomeng 回复于:2003-09-02 20:25:58
[quote:aa37413803="redfox"]可以用cookie或session来保存用户信息。[/quote:aa37413803]     

不是啊,这个是注册表格啊

 echomeng 回复于:2003-09-02 20:28:38
[quote:9b116ec5a4="wubai"]在填写信息页面加上这句话试试看:


session_cache_limiter("private");



The cache limiter is reset to the default value stored in session.cache_limiter at request startup time. Thus, you need t..........[/quote:9b116ec5a4]     

这个好像可以了,这句我好像在很多资料里都没找到嘛,什么意思?

 HonestQiao 回复于:2003-09-03 10:10:14
这样子啊,把输入的变量写道填写表单,输出给用户急需填写阿

 freebee 回复于:2003-09-03 15:12:28
[quote:22be315b5d="redfox"]返回用javascript:window.location=''[/quote:22be315b5d]     

请问一下
我的php每页都有设header
在提交之后如回返回就会出现一样重新提交的信息
如果按了刷新就会重复提交信息
该怎么预防

如果使用javascript:window.location=''
那我连按两次返回又会有这样的问题了

 redfox 回复于:2003-09-03 16:20:57
说实话,一般应用很少会考虑得这么周全。可以在提交前注册一个session或cookies变量,提交成功后立即注销该变量。在提交页用这个变量来判断是否执行sql语句,这样即使按后退再次提交了表单也无法对数据造成影响。

 echomeng 回复于:2003-09-03 22:17:05
[quote:f7f9cab68d="freebee"]    

请问一下
我的php每页都有设header
在提交之后如回返回就会出现一样重新提交的信息
如果按了刷新就会重复提交信息
该怎么预防

如果使用javascript:window.location=''
那我连按两次返回又会有这样?.........[/quote:f7f9cab68d]     


 本人记得曾经回答过这个问题,请查找一下吧

 tonera 回复于:2003-09-04 09:34:38
http://www.chinaunix.net/forum/viewtopic.php?t=144327

 syshome 回复于:2004-04-18 21:33:30
我的解决方案

第一,把form的提交方式由post改为get方式。
第二,把get方式提交的变量在检查错误的程序中捕获出来。出错后不要后退,重新定位到你的页面pageself?xxxx=xxxx&xxxx=xxxx....,重新定位的页面可以编一个函数,供其他程序重复使用的。

我觉得这是最好的解决方案。但有一个问题就是:get方式提交的总长度好像是有限制的,不过对于会员注册是没有问题的。另外注意的就是,你的第一个注册页面所有表单中的value值应该设置一下。

 huabingl 回复于:2004-05-28 15:36:19
如何实现本页的提交表单给本页处理?

 chick0613 回复于:2004-06-06 14:23:35
<a href="javascript:window.history.back()">修改</a>

 laokan 回复于:2004-06-09 23:10:19
但是又有了问题了就是
如果再次打开这个页面的话就又完了
虽然数据库中的数据已经更新,但是这里的数据却还是老样子。

这个又是个问题
session_cache_expire (0);

不知道这个能不能解决些问题。但是我找不到合适的地方放它!

 yejr 回复于:2004-11-26 11:31:59
http://www.phpe.net/faq/73.shtml

 xmlv 回复于:2004-11-26 11:54:23
up

 HonestQiao 回复于:2004-11-26 16:03:41
这么简单的问题,还要回答阿./

你去往上看看验证码的问题吧,就是为了防止用户重复提交的.

提交的时候,生成填表页面随机设置一个session的数字ID,然后把这个数字ID通过图片发送到页面,要求用户输入,如果不输入,就不处理啊.

 echomeng 回复于:2004-11-27 17:23:05
[quote:3e198ad211="HonestQiao"]这么简单的问题,还要回答阿./

你去往上看看验证码的问题吧,就是为了防止用户重复提交的.

提交的时候,生成填表页面随机设置一个session的数字ID,然后把这个数字ID通过图片发送到页面,要求用户输入,如果不输入,?.........[/quote:3e198ad211]

老大,看看梯子的内容吧,回答的不搭界啊,呵呵

 tmdxy 回复于:2005-08-18 02:37:14
第一页就有人回答了,
再给个详细的:
session_cache_limiter('nocache');// 清空表单
session_cache_limiter('private'); //不清空表单,只在session生效期间
session_cache_limiter('public'); //不清空表单,如同没使用session一般

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有