作者:qh663 来原:phpx
由于使用的是mvc结构,在输出页面html内容有这么一句,这是一个验证码图片显示
<img name="validate" src="validate.php" width="68" height="23" alt="看不清楚可点击这里更换!" border="0" onclick="this.src=this.src;" style="cursor : pointer;">
validate.php文件内容如下,可正常显示验证图片
<?php require_once('config.php'); unset($_SESSION['validate']); require_once(PATH_CLASS.'validate.class.php'); new validate; ?> config.php
<?php session_cache_limiter('private, must-revalidate'); session_start(); .... ?> 当验证错误时提示
<?php ..... <input type="button" value="返 回" onclick="location.href=‘index.php?mod=login' "> ..... ?> 点击“返回”相当于重新在当前页打开一个页面。理论上说,应当显示的是一个新的验证码图片。然而,它仍旧显示旧的验证码图片。按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 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; ?> OK,问题解决了。
|