您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)怎么在PHP中利用Ajax實現(xiàn)一個驗證碼功能,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
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)的時候觸發(fā)的處理函數(shù),而數(shù)據(jù)正是通過request.responseText獲取的。
--------------------------------------------------------------------------------
可是我要獲取的數(shù)據(jù)是后臺php文件產(chǎn)生的驗證碼,怎么讓后臺發(fā)送驗證碼?
無論GET還是POST方式都是把數(shù)據(jù)發(fā)送到后臺,ajax從哪里取回后臺的數(shù)據(jù)呢?
百思不得其解之下,我又查詢了另一本資料,找到一個示例:
其中XMLHttpRequest對象送回響應(yīng)的處理語句是:
request.onreadystateschange=alertContent; function alertContent(){ ... alert(request.responseText); ... }
請求的文件為check.php
其中有這么幾句條件輸出:
if($info){ echo "你的用戶名可以使用"; }else { echo "該用戶名已被注冊"; }
而運行實例效果圖中赫然在靜態(tài)頁面彈出消息框,內(nèi)容如check.php頁面的輸出!?。?
也就是說ajax能請求到一個php頁面的輸出內(nèi)容,于是,接下來簡單多了,因為圖片也是驗證碼頁面的輸出,所以不能直接ajax驗證碼頁面,不然就把圖片的數(shù)據(jù)也獲取了。
新建一個php頁面:
sission_start(); $code=""; if(!empty($_session['check']))$code=$_session['check']; echo $code;
再在前端用ajax向這個頁面GET一個請求,就能用request.responseText獲取驗證碼了。
然后把驗證過程封裝在一定條件觸發(fā)的函數(shù)里,即可實時驗證。
關(guān)于怎么在PHP中利用Ajax實現(xiàn)一個驗證碼功能就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。