開發(fā)過程當中,網(wǎng)絡(luò)安全采取的方法之一,采用驗證碼功能。一般在注冊、登錄的程序當中見得比較多。其自己在實現(xiàn)這一功能時,靜態(tài)頁面有一段調(diào)用圖形驗證碼的PHP文件,//<img src=’imgcode.php’id=’imgcode’/>,驗證碼是隨機生成的,一般將生成的驗證碼存入到SESSION當中,以便入其它相關(guān)驗證操作,由于反應(yīng)到客戶端的圖形驗證碼帶有一些雜點,顯示時難免會有一點視覺上的干攏,看不清完整的驗證碼,這時得提供一個刷新驗證碼的功能,以重新生成驗證碼??紤]不通過刷新整個頁面來達到這個效果,采用AJAX重新生成驗證碼時,發(fā)現(xiàn)SESSION值改變了,客戶端修改圖片的src屬性,給它重新賦值卻無任何變化,請求響應(yīng)后,js代碼:
1.var img_obj =??document.getElementById('imgcode');
2.img_obj.src = 'imgcode.php';
3.return;
顯然顯示在客戶端上的圖形驗證碼和服務(wù)器上的沒有得到統(tǒng)一更新。那么在驗證操作時,將不可能得到正確地驗證。
原因是由于瀏覽器的緩存問題,如果兩次都是同樣的值(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=”看不清,點擊刷新”/>
加上一個時間值,或是在后面加上一串隨機數(shù)字,只要保證總是重新刷新即可,再次運行,成功達到局部刷新功能!
其中的AJAX代碼,php生成圖形驗證碼的程序代碼,網(wǎng)上搜一搜,會有很多,這里就不分享啦。