开发过程当中,网络安全采取的方法之一,采用验证码功能。一般在注册、登录的程序当中见得比较多。其自己在实现这一功能时,静态页面有一段调用图形验证码的PHP文件,//<img src='imgcode.php' id='imgcode'/>,验证码是随机生成的,一般将生成的验证码存入到SESSON当中,以便入其它相关验证操作,由于反应到客户端的图形验证码,这时得提供一个刷新验证码的功能,以重新生成验证码。考虑不通过刷新整个页面来达到这个效果,采用AJAX重新生成验证码时,发现SESSION值变了,客户端修改图片的src属性,给他重新赋值却无任何变化,请求响应时,js代码:
1.var img_obj=document.getElementById('imgcode');
2.img_obj.src='imgcode.php';
2.returen;
显然显示在客户端上的图形验证码和服务器上的没有得到统一更新。那么在验证操作时,将不可能得到正确地验证 。
原因是由于浏览器的缓存问题,如果两次都是同样的值(src='imgcode.php'),浏览器一般都不会刷新,所以需要给图片连接动一点手脚。将img_obj.src='imgcode.php'改成
1.img_obj.src = 'imgcode.php?timeamp=' + new Date().getTime();
2,也可以直接写成这样://<img src="../vdimgck.php” id=”vdimgck" onclick="javascript:this.src=this.src+’?rnd=’ + Math.random();" alt=”" title=”看不清,点击刷新”/>
加上一个时间值,或是在后面加上一串随机数字,只要保证总是重新刷新即可,再次运行,成功达到局部刷新功能!
其中的AJAX代码,php生成图形验证码的程序代码,网上搜一搜,会有很多,这里就不分享了。