国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

PHP+AJAX實(shí)現(xiàn)驗(yàn)證碼無刷新驗(yàn)證

2019-01-06 02:19:13席東
電腦知識(shí)與技術(shù) 2019年32期

席東

摘要:驗(yàn)證碼對(duì)大家來說應(yīng)該不會(huì)陌生,諸如登錄賬號(hào)、發(fā)表評(píng)論等操作,網(wǎng)站一般都會(huì)要求用戶輸入驗(yàn)證碼。那么驗(yàn)證碼在網(wǎng)站中起了什么作用呢?當(dāng)我們?cè)谥谱骶W(wǎng)站時(shí)如何添加驗(yàn)證碼功能呢?下面就驗(yàn)證碼的功能、如何使用PHP生成驗(yàn)證碼、如何實(shí)現(xiàn)無刷新局部更新進(jìn)行介紹。

關(guān)鍵詞:驗(yàn)證碼;PHP;AJAX;SESSION

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)32-0053-02

1什么是驗(yàn)證碼

驗(yàn)證碼(CAPTCHA)是“Completely Automated Public Turingtest to tell Computers and Humans Apart”(全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測試)的縮寫。它是一種能夠區(qū)分用戶是計(jì)算機(jī)還是人類的程序。

驗(yàn)證碼能夠?qū)Ρ┝ζ平饷艽a、無限刷票、論壇灌水等操作進(jìn)行有效防止,當(dāng)前很多網(wǎng)站基礎(chǔ)都會(huì)使用驗(yàn)證碼。簡單來說驗(yàn)證碼是一個(gè)由計(jì)算機(jī)自動(dòng)生成的問題,問題回答的是否正確由計(jì)算機(jī)自動(dòng)評(píng)判。一般來說驗(yàn)證碼所表達(dá)的問題只有人類才能解答,而計(jì)算機(jī)是無法解答這個(gè)的問題,于是可以得出不能正確回答驗(yàn)證碼問題的用戶,就不是合法用戶,對(duì)這些用戶做出限制,就可以避免很多惡意情況的發(fā)生。

驗(yàn)證碼的種類有很多,有的是一張圖片,圖片上有數(shù)字,字符、漢字、運(yùn)算式等信息;有的是多張圖片需要用戶根據(jù)要求進(jìn)行選擇;有的需要用戶使用鼠標(biāo)拖動(dòng)完成驗(yàn)證。向網(wǎng)站進(jìn)行數(shù)據(jù)請(qǐng)求時(shí),用戶需要識(shí)別圖片上的內(nèi)容,然后網(wǎng)站會(huì)檢查用戶輸入的驗(yàn)證碼與系統(tǒng)生成的驗(yàn)證碼是否一致,如一致則認(rèn)為這次訪問網(wǎng)站的請(qǐng)求是一個(gè)正常的操作,如驗(yàn)證碼不一致,網(wǎng)站則會(huì)拒絕此次請(qǐng)求。

驗(yàn)證碼可有效防止一些惡意攻擊,對(duì)于提升網(wǎng)站的安全性、可服務(wù)性有重要意義。

2在網(wǎng)站中添加驗(yàn)證碼

PHP語言是一種常用的動(dòng)態(tài)網(wǎng)站編程語言,如何使用PHP語言生成驗(yàn)證碼呢?

2.1創(chuàng)建驗(yàn)證碼

1)使用imagecreatetruecolor函數(shù)生成指定規(guī)格的圖片

imagecreatetruecolor(int $width,int $height)

imagecreatetruecolor()如果執(zhí)行成功,會(huì)返回一個(gè)圖像標(biāo)識(shí)符,代表了一幅大小為x_size和y_size的黑色圖像,該函數(shù)第一個(gè)參數(shù)是圖像的寬度,第二個(gè)參數(shù)是圖像的高,單位為像素,如執(zhí)行失敗返回FALSE。

2)使用ImageColorAllocate函數(shù)為圖像分配顏色

imagecolorallocate(resource $image,int $red,int $green,int$blue)

imagecolorallocate()執(zhí)行成功后,返回一個(gè)標(biāo)識(shí)符,代表由給定的RGB成分組成的顏色。該函數(shù)的$image參數(shù)是一個(gè)圖像標(biāo)識(shí)符,$red,$green和$blue分別是所需要的顏色的紅,綠,藍(lán)成分,顏色參數(shù)是0到255的整數(shù)或者十六進(jìn)制的Ox00到OxFF。如執(zhí)行失敗則返回-1。

如果需要可以使用rand()和mt_rand()函數(shù)生成隨機(jī)顏色,如:

$rand_color=ImageColorAllocate($im,rand(0,255),rand(0,255),rand(0,255))

3)使用ImageFill函數(shù)填充圖片的背景色

imagefill(resource$image,int$x,int$y,int$color)

imagefill()函數(shù)在image圖像的坐標(biāo)x,y處使用color所代表的顏色,執(zhí)行區(qū)域填充。如執(zhí)行成功返回TRUE,執(zhí)行失敗返回FALSE。

4)使用mt_rand函數(shù)生成隨機(jī)數(shù)字

mt_rand(int$min,int$max)

mt_rand()函數(shù)如果執(zhí)行成功,會(huì)返回一個(gè)在min與max(包含這個(gè)值)之間的隨機(jī)整數(shù)。

5)使用ImageString函數(shù)在指定圖像上水平畫一行字符串

imagestring(resource $image,int $font,int $x,int $y,string $s,int$col)

imagestring()函數(shù)執(zhí)行成功,會(huì)使用由col指定的顏色將字符串s畫到image所代表的圖像的x,y坐標(biāo)處,如果font是1,2,3,4或5,則會(huì)使用內(nèi)置字體,當(dāng)然也可以使用自定義字體,只需加載指定的字體集(ttf)文件即可。

在這里,可以進(jìn)行多種變形,可以分別將兩個(gè)隨機(jī)數(shù)字的數(shù)學(xué)運(yùn)算式顯示到圖片上,還可以隨機(jī)生成幾個(gè)文字或字符顯示到圖片上等,用來增加機(jī)器識(shí)別驗(yàn)證碼的難度。

2.2將驗(yàn)證碼的答案保存到SESSION

WEB服務(wù)器向本地瀏覽器傳輸信息時(shí)使用的是HTYP協(xié)議,它是一種無狀態(tài)(stateless)協(xié)議,即HTTP協(xié)議自身不能對(duì)通信的信息進(jìn)行保存。HTTP協(xié)議不能保留之前一切的請(qǐng)求或響應(yīng)報(bào)文的信息,那么應(yīng)如何保存驗(yàn)證碼的信息呢?

Session又稱為會(huì)話控制,Session能夠存儲(chǔ)用戶訪問WEB服務(wù)器時(shí)生成的相關(guān)數(shù)據(jù)。當(dāng)用戶在應(yīng)用程序的Web頁面之間跳轉(zhuǎn)時(shí),存儲(chǔ)在Session對(duì)象中的數(shù)據(jù)就不會(huì)丟失,直到訪問WEB服務(wù)器的會(huì)話結(jié)束。

將PHP生成的驗(yàn)證碼結(jié)果保存到SESSION后,在會(huì)話結(jié)束前可以隨時(shí)讀取SESSION中的驗(yàn)證碼,用來與用戶提交的驗(yàn)證碼進(jìn)行比較。

首先使用session_start()函數(shù),啟動(dòng)一個(gè)新會(huì)話。

然后將生成的隨機(jī)數(shù)保存到SESSION關(guān)聯(lián)數(shù)組中。

4如何在不刷新網(wǎng)頁的前提下刷新驗(yàn)證碼

在訪問網(wǎng)站時(shí),如果用戶看不清楚驗(yàn)證碼圖片中的內(nèi)容,就需要重新得到新的驗(yàn)證碼圖片。這時(shí)如果刷新整個(gè)頁面能夠刷新出新的驗(yàn)證碼圖片,但是頁面中其他內(nèi)容也會(huì)被刷新,這會(huì)給用戶帶來較差的體驗(yàn)。

如果能夠只刷新驗(yàn)證碼圖片,而不影響頁面中其他元素,將會(huì)大大提升網(wǎng)頁的友好性及用戶體驗(yàn)。

5總結(jié)

為了防止非法用戶利用計(jì)算機(jī)自動(dòng)批量注冊(cè)、發(fā)表評(píng)論、對(duì)特定賬號(hào)進(jìn)行暴力破解等行為,驗(yàn)證碼技術(shù)應(yīng)運(yùn)而生,驗(yàn)證碼一般是一個(gè)混合了數(shù)字或符號(hào)的圖片,并且驗(yàn)證碼圖片可能會(huì)含有干擾信息(能夠增加機(jī)器識(shí)別的難度)。每次請(qǐng)求時(shí)均需要進(jìn)行驗(yàn)證碼驗(yàn)證,這將有效防止有人惡意、暴力攻擊。用戶在識(shí)別驗(yàn)證碼時(shí),會(huì)占用一些時(shí)間,這也能夠起到減輕服務(wù)器壓力的作用。

隨著圖片識(shí)別技術(shù)的不斷發(fā)展,圖片上的信息也逐漸可以被計(jì)算機(jī)程序識(shí)別,于是驗(yàn)證碼技術(shù)也在不斷進(jìn)步,不斷完善,也將變得更加復(fù)雜。

大荔县| 开原市| 普洱| 石首市| 涞水县| 荃湾区| 遂平县| 绥中县| 保靖县| 嘉定区| 开封市| 藁城市| 松溪县| 玉屏| 建宁县| 凤山市| 长治市| 丽水市| 海城市| 三江| 大余县| 桐柏县| 武穴市| 方正县| 隆尧县| 和硕县| 连云港市| 灯塔市| 阳江市| 密山市| 云浮市| 甘谷县| 鄂尔多斯市| 乳源| 汪清县| 靖安县| 嘉禾县| 庆城县| 天祝| 金堂县| 陆丰市|