基礎級-圖形驗證碼

專套本考試完畢,做個圖形驗證碼筆記,也當做GD API的敲門磚。

前述

  圖形驗證碼的生成需要使用GD庫。
  GD庫是php處理圖形的擴展庫,提供了一系列用來生成、處理圖片的API。
  貌似默認開啓,如若未開啓,請在php.ini文件的extension=php_gd2.dll行開啓,去除該段代碼前的;即可。可使用print_r(gd_info());來確認啓用狀況。
     - 功能涵蓋:生成縮略圖、圖片加水印、驗證碼、生成報表 等。
     - Tips:在2.0.28 版之前,GIF相關函數無法使用。”(來源:百度百科)
  一般流程爲:生成或讀取畫布 → 定義所需顏色 → 填充內容 → 輸出圖片 → 銷燬畫布
  imagecreate

所需函數

  我們要用到的函數有:

    1. imagecreate( int $x_size , int $y_size ):用於創建畫布;
    2. imagecolorallocate( resource $image , int $red , int $green , int $blue ):用於分配顏色
    3. imagesetpixel( resource $image , int $x , int $y , int $color ):用於繪製單一像素。圖像左上角爲0,0
    4. imagestring( resource $image , int $font , int $x , int $y , string $s , int $col ):繪製字符串。
    5. imagerectangle( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col ):繪製矩形。左上角座標爲 x1, y1,右下角座標爲 x2, y2。
    6. imagepng( resource $image [, string $filename ] ):將 GD 圖像流(image)以 PNG 格式輸出,或者如果用 filename 給出了文件名則將其輸出到該文件。
    7. imagedestroy ( resource $image ):銷燬圖像佔用內存。

  看了上述內容,我相信腦海中已經有了一個框架了,那麼我們來討論一些技術細節。

技術細節

  用於聲明圖層文件的格式的HTTP頭,看代碼自己體悟:header("Content-Type:image/png");
  關於HTTP頭的內容,詳見參考資料中的HTTP頭部詳解,供大家系統化的瞭解、熟悉頭部知識——那些問頭皮屑和毛髮知識的人,你們奏凱,23333~


Created with Raphaël 2.1.0載入頁面用戶輸入輸入驗證執行請求錯誤提示驗證碼重載yesno

結合前輩們的安利,提出簡單方案:
通過JavaScript自動獲取驗證碼圖片,並同步保存至Session。
在提交表單時,通過驗證碼準確性驗證後,方可執行請求。

參考資料:
PHP生成圖形驗證碼的幾種方法 - mysoftsky
經典的PHP驗證碼類分享 - junjie
HTTP頭部詳解 - zooyo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章