999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

PHP+AJAX實現驗證碼無刷新驗證

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

席東

摘要:驗證碼對大家來說應該不會陌生,諸如登錄賬號、發表評論等操作,網站一般都會要求用戶輸入驗證碼。那么驗證碼在網站中起了什么作用呢?當我們在制作網站時如何添加驗證碼功能呢?下面就驗證碼的功能、如何使用PHP生成驗證碼、如何實現無刷新局部更新進行介紹。

關鍵詞:驗證碼;PHP;AJAX;SESSION

中圖分類號:TP393 文獻標識碼:A

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

1什么是驗證碼

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

驗證碼能夠對暴力破解密碼、無限刷票、論壇灌水等操作進行有效防止,當前很多網站基礎都會使用驗證碼。簡單來說驗證碼是一個由計算機自動生成的問題,問題回答的是否正確由計算機自動評判。一般來說驗證碼所表達的問題只有人類才能解答,而計算機是無法解答這個的問題,于是可以得出不能正確回答驗證碼問題的用戶,就不是合法用戶,對這些用戶做出限制,就可以避免很多惡意情況的發生。

驗證碼的種類有很多,有的是一張圖片,圖片上有數字,字符、漢字、運算式等信息;有的是多張圖片需要用戶根據要求進行選擇;有的需要用戶使用鼠標拖動完成驗證。向網站進行數據請求時,用戶需要識別圖片上的內容,然后網站會檢查用戶輸入的驗證碼與系統生成的驗證碼是否一致,如一致則認為這次訪問網站的請求是一個正常的操作,如驗證碼不一致,網站則會拒絕此次請求。

驗證碼可有效防止一些惡意攻擊,對于提升網站的安全性、可服務性有重要意義。

2在網站中添加驗證碼

PHP語言是一種常用的動態網站編程語言,如何使用PHP語言生成驗證碼呢?

2.1創建驗證碼

1)使用imagecreatetruecolor函數生成指定規格的圖片

imagecreatetruecolor(int $width,int $height)

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

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

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

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

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

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

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

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

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

4)使用mt_rand函數生成隨機數字

mt_rand(int$min,int$max)

mt_rand()函數如果執行成功,會返回一個在min與max(包含這個值)之間的隨機整數。

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

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

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

在這里,可以進行多種變形,可以分別將兩個隨機數字的數學運算式顯示到圖片上,還可以隨機生成幾個文字或字符顯示到圖片上等,用來增加機器識別驗證碼的難度。

2.2將驗證碼的答案保存到SESSION

WEB服務器向本地瀏覽器傳輸信息時使用的是HTYP協議,它是一種無狀態(stateless)協議,即HTTP協議自身不能對通信的信息進行保存。HTTP協議不能保留之前一切的請求或響應報文的信息,那么應如何保存驗證碼的信息呢?

Session又稱為會話控制,Session能夠存儲用戶訪問WEB服務器時生成的相關數據。當用戶在應用程序的Web頁面之間跳轉時,存儲在Session對象中的數據就不會丟失,直到訪問WEB服務器的會話結束。

將PHP生成的驗證碼結果保存到SESSION后,在會話結束前可以隨時讀取SESSION中的驗證碼,用來與用戶提交的驗證碼進行比較。

首先使用session_start()函數,啟動一個新會話。

然后將生成的隨機數保存到SESSION關聯數組中。

4如何在不刷新網頁的前提下刷新驗證碼

在訪問網站時,如果用戶看不清楚驗證碼圖片中的內容,就需要重新得到新的驗證碼圖片。這時如果刷新整個頁面能夠刷新出新的驗證碼圖片,但是頁面中其他內容也會被刷新,這會給用戶帶來較差的體驗。

如果能夠只刷新驗證碼圖片,而不影響頁面中其他元素,將會大大提升網頁的友好性及用戶體驗。

5總結

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

隨著圖片識別技術的不斷發展,圖片上的信息也逐漸可以被計算機程序識別,于是驗證碼技術也在不斷進步,不斷完善,也將變得更加復雜。

主站蜘蛛池模板: 韩日无码在线不卡| 午夜丁香婷婷| 热思思久久免费视频| 国产人免费人成免费视频| 欧美精品二区| 嫩草在线视频| 欧美日韩专区| 亚洲成aⅴ人片在线影院八| 国产一区免费在线观看| 亚洲AⅤ综合在线欧美一区| 国产精品嫩草影院av| a级毛片免费播放| 久久99精品国产麻豆宅宅| 91久久国产热精品免费| 久久综合伊人 六十路| 91久久青青草原精品国产| 天堂岛国av无码免费无禁网站| 亚洲日本www| 黄片一区二区三区| 国产电话自拍伊人| 在线观看国产网址你懂的| 国产白浆视频| 性视频一区| 精品一区二区三区自慰喷水| 国产亚洲精| 国产精品第一区| 日韩精品亚洲人旧成在线| 免费毛片在线| 欧美久久网| 欧美国产成人在线| 日本欧美在线观看| 不卡网亚洲无码| 啦啦啦网站在线观看a毛片 | 久久a毛片| 国产视频自拍一区| 成人免费午间影院在线观看| 夜夜操国产| 国产欧美精品一区二区| 亚洲欧美日韩视频一区| 久久久久国产一区二区| 67194成是人免费无码| 中文无码日韩精品| 久久精品一卡日本电影| 伊人成人在线视频| 国产麻豆另类AV| 一区二区三区四区在线| 久久综合成人| 无码日韩精品91超碰| 亚洲 欧美 日韩综合一区| 日韩午夜片| 免费全部高H视频无码无遮掩| 日本伊人色综合网| 国产区免费| 日韩视频福利| 亚洲va精品中文字幕| 91国内在线观看| 国产产在线精品亚洲aavv| 亚洲无码不卡网| 国产精品13页| 美女国产在线| 欧美有码在线| 毛片基地视频| 无码AV日韩一二三区| 亚洲天堂免费| 国产欧美网站| 久久公开视频| 国产性猛交XXXX免费看| m男亚洲一区中文字幕| 日韩欧美高清视频| WWW丫丫国产成人精品| 欧美狠狠干| 免费A级毛片无码无遮挡| 国产乱子精品一区二区在线观看| 国产麻豆精品在线观看| 久久精品人妻中文系列| 国产精品欧美激情| 2048国产精品原创综合在线| 97色伦色在线综合视频| 国产男女免费完整版视频| 日韩一级毛一欧美一国产| 中文字幕伦视频| 亚洲欧美一区在线|