首頁  >  文章  >  後端開發  >  驗證碼PHP類 支援數字,字母,漢字,混合

驗證碼PHP類 支援數字,字母,漢字,混合

WBOY
WBOY原創
2016-07-25 08:46:21820瀏覽
  1. // ------------------------------ ------------------------------------------
  2. // 驗證碼類,該類別的物件能動態取得驗證碼圖片,驗證碼字元儲存在SESSION['code']中
  3. // --------------------- -------------------------------------------------- -
  4. // 支援4種格式數字字母漢字混合
  5. // ------------------------------- -----------------------------------------
  6. // @Author: HelloChina (sanzi0930@163.com)
  7. // -------------------------------------- ----------------------------------
  8. // @Date: 2012年6月7日11: 03:00
  9. // ------------------------------------------ ------------------------------
  10. // @version 1.0
  11. // ------- -------------------------------------------------- ---------------
  12. class Vcode{
  13. protected $width; //驗證碼寬度
  14. protected $height; //驗證碼長度
  15. protected $codeNum; //驗證碼字元數
  16. protected $codeType; //驗證碼類型
  17. protected $fontSize; //字元大小
  18. protected $fontType; //字型類型
  19. protected $codeStr; //中文內容
  20. protected $strNum; //中文個數
  21. protected $imageType; //輸出圖片類型
  22. protected $image; //圖片資源
  23. protected $checkCode; / /驗證碼內容
  24. /**
  25. ----------------------------------------------- ---------------------------------
  26. * 取得驗證碼資訊
  27. ------ -------------------------------------------------- ------------------------
  28. * @param integer $width 驗證碼寬度
  29. * @param integer $height 驗證碼高度
  30. * @param integer $codeNum 驗證碼字元數
  31. * @param integer $codeType 驗證碼字元類型1為數字2為字母3為漢字4為混編
  32. * @param integer $fontSize 驗證碼字體的大小
  33. * @param string $fontType 驗證碼字體類型
  34. * @param string $imageType 驗證碼輸出圖片類型
  35. * @param string $codestr 中文驗證碼內容
  36. ----- -------------------------------------------------- -------------------------
  37. */
  38. public function __construct($width=100, $height=50, $codeNum=4, $codeType=4, $fontSize=12, $fontType= 'heiti.ttf' ,$imageType='jpeg', $codeStr='去我餓人他一哦平啊是的飛個好就看了在想才吧你嗎'){
  39. $this-> width = $width;
  40. $this->height = $height;
  41. $this->codeNum = $codeNum;
  42. $this->codeType = $codeType;
  43. $this->fontSize = $fontSize;
  44. $this->fontType = $fontType;
  45. $this->codeStr = $codeStr;
  46. $this->strNum = strlen($this->codeStr)/3-1;
  47. $this->imageType = $imageType;
  48. $this->checkCode = $this->getCheckCode();
  49. }
  50. // ---------- -------------------------------------------------- --------------------
  51. //* 產生驗證碼字元
  52. // --------------- -------------------------------------------------- ---------------
  53. //* @return string
  54. // --------------------- -------------------------------------------------- ---------
  55. public function __toString(){
  56. $string = implode('', $this->getCheckCode());
  57. $_SESSION["code"]=$ string; //加到session
  58. $this->getImage(); //輸出驗證碼
  59. return '';
  60. }
  61. protected function getCheckCode(){
  62. $string = array();
  63. switch($this->codeType){
  64. case 1:
  65. //數字字串
  66. $string = array_rand(range(0,9), $this->codeNum );
  67. break;
  68. case 2:
  69. //大字母字串
  70. $string = array_rand(array_flip(range('A', 'Z')), $this->codeNum) ;
  71. break;
  72. case 3:
  73. //漢字字串
  74. for($i=0; $icodeNum); $i ){
  75. $start = mt_rand(0, $this->strNum);
  76. $string[$i]= self::msubstr($this->codeStr,$start);
  77. }
  78. break;
  79. case 4:
  80. //混合字串
  81. for($i=0; $icodeNum); $i ){
  82. $rand= mt_rand(0,2);
  83. switch($rand){
  84. case 0:
  85. $ascii = mt_rand(48,57);
  86. $string[$i] = sprintf('%c ',$ascii);
  87. break;
複製程式碼

驗證碼, PHP
本主題由 小貝 於 2015-11-18 08:23 移動


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn