![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
由于使用的是mvc结构,在输出页面html内容有这么一句,这是一个验证码图片显示
validate.php文件内容如下,可正常显示验证图片
[php]
<?php
require_once('config.php');
unset($_SESSION['validate']);
require_once(PATH_CLASS.'validate.class.php');
new validate;
?>
[/php]
config.php
[php]
<?php
session_cache_limiter('private, must-revalidate');
session_start();
....
?>
[/php]
当验证错误时提示
[php]
.....
.....
[/php]
点击“返回”相当于重新在当前页打开一个页面。理论上说,应当显示的是一个新的验证码图片。然而,它仍旧显示旧的验证码图片。按f5刷新才会变成一个新的验证码图片。要知道 location.href 不等于history.go(-1), location.href 本身就相当于初始一个页面。而事实变得让人迷惑了。
经反复检查,validate.php文件没有问题,config.php文件也没有什么值得怀疑的。显示页面也不存在问题。那么,是什么原因造成这个短暂的错误呢?!在网上查了很久,也有人遇到过这种情况,但却没有解决方法。只能通过刷新页面来解决吗?
想呀想,莫非。。。。。
试一下,

真的可以了。
这次操作只加了两个符号

竟然可以了....
是”//“符号
//session_cache_limiter('private, must-revalidate');
这句session_cache_limiter('private, must-revalidate');的使用目的是让表单history.go(-1)的时候,填写内容不丢失。现在,却成了一绊脚石.....
于是再改。session_cache_limiter('private, must-revalidate');这句是要保留的,不能注释掉,否则,表单返回时数据就丢失了。只能在validate.php里面做文章。
validate.php
[php]
<?php
header("ETag: PUB" . time());
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Pragma: no-cache");
header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
session_cache_limiter("nocache");
require_once('config.php');
unset($_SESSION['validate']);
require_once(PATH_CLASS.'validate.class.php');
new validate;
?>
[/php]
OK,问题解决了。

