怎样让浏览器后退时不显示网页过期,而显示原先的页面
时间:2007-02-17 来源:PHP爱好者
http://127.0.0.1/site/member_register.php?job=agreement&membertype=p
一个会员注册链接,出现一个注册表格,提交后提示错误,然后就需要用户返回,但是我按返回后就出现
警告: 网页已经过期 您申请的网页是用表单中提交的信息创建的。该网页已失效。由于有安全预警功能,Internet Explorer 不会自动再次提交您的信息。
要重新提交信息并查看该网页,请单击刷新按钮。
这样就势必要注册人重新填写一遍表格,我以前通过perl编程好像不会有这种问题,为什么php就会这样呢?
关键问题在于我做的有些页面它不会这样,有些就一定需要刷新
有办法控制吗?比如通过发送网页头?
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一般
非常全面的一个php技术网站,php 爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
一个会员注册链接,出现一个注册表格,提交后提示错误,然后就需要用户返回,但是我按返回后就出现
警告: 网页已经过期 您申请的网页是用表单中提交的信息创建的。该网页已失效。由于有安全预警功能,Internet Explorer 不会自动再次提交您的信息。
要重新提交信息并查看该网页,请单击刷新按钮。
这样就势必要注册人重新填写一遍表格,我以前通过perl编程好像不会有这种问题,为什么php就会这样呢?
关键问题在于我做的有些页面它不会这样,有些就一定需要刷新
有办法控制吗?比如通过发送网页头?
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一般
非常全面的一个php技术网站,php 爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
相关阅读 更多 +