PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

驗證碼的作用?

驗證碼是隨機產生的數字和符號,動態生成的一幅圖,或者在圖片上加上一些干擾信息。驗證碼一般在表單提交時使用(網站用戶註冊、登錄、論壇發帖時),只有審核成功後才能使用某項功能。驗證碼可以防止機器惡意註冊從而避免嚴重耗費系統資源,降低網站性能影響正常的用戶體驗。另外驗證碼可以確保當前訪問者是一個人而非機器。今天問大家介紹一下php用類實現驗證碼驗證。

第一步:用類設計驗證碼

1、首先要聲明一個類,並通過面向對象的特徵把實現驗證碼的細節封裝在這個類中。我們要創建一個寬度60像素,高度為20像素,四個數字組成。

聲明類的名稱是Validationcode,設置了驗證碼的寬度($width)、高度($height;)、個數($codeNum)、驗證碼字符($checkCode)、畫布($image),並把成員屬性width、height、codeNum、checkCode初始化,設置驗證碼個數是4。

PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

2、創建向瀏覽器輸出圖像的方法showImage(),並調用內部getCreateImage()方法創建畫布,outputText()方法調用隨機字符串,outputImage()方法生成圖像並輸出。 getcheckCode()訪問該方法獲取隨機創建的驗證碼字符串。getCreateImage ()該方法是創建圖像,初始化背景。代碼如下圖:

PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

3、通過 createCheckCode()方法生成四個數字字符串,$rand_number=rand(48,57)表示生成數字。通過for循環實現生成4個數字字符串。outputText()方法是隨機顏色、隨機擺放、隨機字符串向圖像輸出。代碼如下圖:

PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

4、outputImage()方法自動檢測PHP中GD支持的圖像類型,並輸出圖像,通過if..elseif..else語句來判斷生成的GIF、JPG、PNG、WBMP格式圖像是否存在,如果沒有支持的圖像類型,會輸出錯誤消息並推出程序。__destruct()方法是對象結束之前銷燬圖像資源釋放內存。代碼如下:

PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

第二步:驗證碼類的實例對象

創建驗證碼類的對象,從驗證碼對象中獲取生成驗證碼圖片,發送到瀏覽器中。接著從驗證碼對象獲取字符串,使用session保留字符串在服務器中。session_start();開啟SESSION,$image=new Validationcode(60,20,4);創建驗證碼類的對象,$image->showImage();調用方法向瀏覽器發送圖片,$_SESSION['validationcade']=$image->getcheckCode();把字符串保留在服務器中。代碼如下:

PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

第三步:表單驗證

包括用戶輸入表單和匹配驗證碼部分。在表單中輸出動態獲取的驗證碼圖片,單擊重新動態獲取另一張驗證碼圖片(通過js函數和單擊事件完成)。客戶端接受的驗證和服務器上保留的驗證碼相同,則提示成功,否則會提示錯誤。代碼如下:

PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

運行結果如下

PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

PHP晉級:三步實現驗證碼類的設計,先收藏留著以後用!

最後給大家留一個作業,還可以加上驗證碼圖像干擾和數字字母結合的功能,感興趣的讀者可以自己試試,要上面源碼私我!關於“php用類實現驗證碼功能”先聊到這。每天學習一個知識點,每日寄語”只要今天的你優於昨天的你,便是最大的成功”如轉載請標註出處。


分享到:


相關文章: