最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP+Ajax實(shí)現(xiàn)驗(yàn)證碼的實(shí)時(shí)驗(yàn)證

 更新時(shí)間:2016年07月20日 14:44:16   作者:hhhzua  
這篇文章主要為大家詳細(xì)介紹了PHP+Ajax實(shí)現(xiàn)驗(yàn)證碼的實(shí)時(shí)驗(yàn)證,感興趣的小伙伴們可以參考一下

PHP的圖像處理功能強(qiáng)大,做一張驗(yàn)證碼圖片也是非常簡單的,但是,在實(shí)現(xiàn)實(shí)時(shí)驗(yàn)證時(shí),確遇到了一個(gè)難題:
我用nat123對我的電腦上的網(wǎng)站進(jìn)行端口映射,實(shí)現(xiàn)了在外網(wǎng)訪問,本來是采用cookie的方式用js對驗(yàn)證碼進(jìn)行驗(yàn)證,但是經(jīng)檢驗(yàn)發(fā)現(xiàn)nat123雖然使我的網(wǎng)站可以通過一個(gè)自定義的網(wǎng)址進(jìn)行訪問,但是產(chǎn)生驗(yàn)證碼的php文件在網(wǎng)絡(luò)上的位置竟然和其它頁面不在一個(gè)域,經(jīng)查詢得知,因?yàn)檩敵鰣D片的緣故,被作為緩存文件映射在了某個(gè)文件夾內(nèi),所以——其他頁面在我的網(wǎng)址下,產(chǎn)生驗(yàn)證碼的頁面又在另一個(gè)網(wǎng)址里,所以它們的cookie不能共用,不管怎么設(shè)置path和domain都不管用,于是我只好采用session存儲驗(yàn)證碼了,因?yàn)閟ession存在于服務(wù)器,也就是在我本地網(wǎng)址中都可以存取。
接下來是重頭戲,之前只是粗略了解過ajax,對于它的用途和特性還是知道的,獲取后臺來的數(shù)據(jù)這個(gè)比較泛泛的概念具體的使用起來就不知道如何下手了。
首先,我分析了個(gè)例題的代碼,用途是獲取后臺的一個(gè)文本文件的內(nèi)容:

function getHTTPObject(){
  if(typedef XMLHttpRequest == "undefined")
    XMLHttpRequest = function(){
      try{ return new ActiveXObject("Msxml2.XMLHTTP.6.0");}
      catch(e){}
      try{ return new ActiveXObject("Msxml2.XMLHTTP.3.0");}
      catch(e){}
      try{ return new ActiveXObject("Msxml2.XMLHTTP");}
      catch(e){}
      return false;
    }
    return new XMLHttpRequest();
}
function getNewContent(){
  var request = getHTTPObject();
  if(request){
    request.open("GET","TEST.txt",true);
    request.onreadystateschange = function(){
      alert(request.responseText);
    }
  }else{
  alert("no support XMLHttpRequest!");
  }
}

其中的關(guān)鍵是:

  request.open("GET","TEST.txt",true);
    request.onreadystateschange =function(){
      alert(request.responseText);
    }

這三句指定了GET請求發(fā)向的頁面和XMLHttpRequest對象送回響應(yīng)的時(shí)候觸發(fā)的處理函數(shù),而數(shù)據(jù)正是通過request.responseText獲取的。

--------------------------------------------------------------------------------

可是我要獲取的數(shù)據(jù)是后臺php文件產(chǎn)生的驗(yàn)證碼,怎么讓后臺發(fā)送驗(yàn)證碼?
無論GET還是POST方式都是把數(shù)據(jù)發(fā)送到后臺,ajax從哪里取回后臺的數(shù)據(jù)呢?
百思不得其解之下,我又查詢了另一本資料,找到一個(gè)示例:
其中XMLHttpRequest對象送回響應(yīng)的處理語句是:

request.onreadystateschange=alertContent;
function alertContent(){
...
  alert(request.responseText);
...
}

請求的文件為check.php
其中有這么幾句條件輸出:

if($info){
  echo "你的用戶名可以使用";
}else {
  echo "該用戶名已被注冊";
}

而運(yùn)行實(shí)例效果圖中赫然在靜態(tài)頁面彈出消息框,內(nèi)容如check.php頁面的輸出?。。?
也就是說ajax能請求到一個(gè)php頁面的輸出內(nèi)容,于是,接下來簡單多了,因?yàn)閳D片也是驗(yàn)證碼頁面的輸出,所以不能直接ajax驗(yàn)證碼頁面,不然就把圖片的數(shù)據(jù)也獲取了。
新建一個(gè)php頁面:

sission_start();
$code="";
if(!empty($_session['check']))$code=$_session['check'];
echo $code;

再在前端用ajax向這個(gè)頁面GET一個(gè)請求,就能用request.responseText獲取驗(yàn)證碼了。
然后把驗(yàn)證過程封裝在一定條件觸發(fā)的函數(shù)里,即可實(shí)時(shí)驗(yàn)證。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

富锦市| 洞头县| 平定县| 保康县| 伊宁市| 松桃| 全南县| 北流市| 木里| 玛曲县| 大埔区| 神农架林区| 额敏县| 辽阳县| 克什克腾旗| 田林县| 临朐县| 灵宝市| 乡宁县| 西乌珠穆沁旗| 虞城县| 确山县| 香河县| 仲巴县| 泾阳县| 南部县| 张家港市| 台州市| 康保县| 龙州县| 黄山市| 镇宁| 蒙阴县| 新和县| 诸城市| 彰化县| 沂南县| 同心县| 清新县| 道真| 赣榆县|