亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP驗證碼例子(帶刷新)DEMO_PHP圖片驗證碼類實例

2024-09-04 11:44:39
字體:
來源:轉載
供稿:網友

驗證碼這樣的功能可以說是無處不在了、那使用php來實現驗證碼這樣的功能呢?接下來我就將驗證碼實現封裝到一個類里面獨立出來、那么后面如果再使用到驗證碼功能。

直接引入該類文件并創建該類的實例、就可以使用驗證碼了,驗證碼類文件vcode.class.php代碼如下:

  1. //驗證碼類 
  2. class Vcode{ 
  3. private $width;//圖片寬度 
  4. private $height;//圖片高度 
  5. private $num;//驗證碼個數 
  6. private $img;//圖片資源 
  7. private $code;//驗證碼 
  8. private $pointNum;//干擾點個數 
  9. private $lineNum;//干擾線個數 
  10. private $fontFile;//字體文件 
  11.  
  12. //構造函數初始化相關數據 
  13. function __construct($width=85,$height=34,$num=4){ 
  14. $this->width=$width
  15. $this->height=$height
  16. $this->num=$num
  17. $this->code=$this->createCode(); 
  18. $this->pointNum=100; 
  19. $this->lineNum=10; 
  20. $this->fontFile="<a href="http://dwtedx.com/font/無"  
  21. target="_blank" class="keylink">STL</a>ITI.TTF"; 
  22.  
  23. //用于設置成員屬性 
  24. //@param string $key 成員屬性名 
  25. //@param mixed $value 成員屬性值 
  26. //@return object 返回自己對象$this,可用于連貫操作 
  27. public function set($key,$val){ 
  28. //get_class_vars() 獲取類中的屬性組成的數組 
  29. //get_class() 返回對象的類名 
  30. if(array_key_exists($key,get_class_vars(get_class($this)))){ 
  31. $this->setOption($key,$val); 
  32. return $this
  33. //設置參數 
  34. private function setOption($key,$value){ 
  35. $this->$key=$value
  36.  
  37. //獲取驗證碼 
  38. public function getCode(){ 
  39. return $this->code; 
  40.  
  41. //輸出圖像 
  42. public function outImg(){ 
  43. //創建圖像 
  44. $this->createImage(); 
  45. //畫驗證碼 
  46. $this->drawCode(); 
  47. //畫干擾元素 
  48. $this->drawDisturbColor(); 
  49. //輸出圖像 
  50. $this->printImg(); 
  51.  
  52. //畫驗證碼 
  53. private function drawCode(){ 
  54. $this->fontFile="./font/".$this->fontFile; 
  55. for($i=0;$i<$this->num;$i++){ 
  56. //設置隨機顏色 
  57. $randColor=imagecolorallocate($this->img,rand(0,128) 
  58. ,rand(0,128),rand(0,128)); 
  59. //字體大小 
  60. $fontSize=rand(20,23); 
  61. //字體水平位置 
  62. $x=($this->width/$this->num)*$i
  63. //水平方向的位置 
  64. $y=rand($fontSize,imagefontheight($fontSize)+3); 
  65. //畫字體 
  66. imagettftext($this->img,$fontSize,0,$x,$y,$randColor
  67. $this->fontFile,$this->code{$i}); 
  68.  
  69. //畫干擾元素 
  70. private function drawDisturbColor(){ 
  71. //畫干擾點 
  72. for($i=0;$i<$this->pointNum;$i++){ 
  73. //設置隨機顏色 
  74. $randColor=imagecolorallocate($this->img,rand(0,255), 
  75. rand(0,255),rand(0,255)); 
  76. //畫點 
  77. imagesetpixel($this->img,rand(1,$this->width-2),rand(1, 
  78. $this->height-2),$randColor); 
  79. //畫干擾線 
  80. for($i=0;$i<$this->lineNum;$i++){ 
  81. //設置隨機顏色 
  82. $randColor=imagecolorallocate($this->img,rand(0,200), 
  83. rand(0,200),rand(0,200)); 
  84. //畫線 
  85. imageline($this->img,rand(1,$this->width-2),rand(1, 
  86. $this->height-2),rand(1,$this->height-2), 
  87. rand(1,$this->width-2),$randColor); 
  88.  
  89. //創建圖像 
  90. private function createImage(){ 
  91. //創建一個真彩色圖像 
  92. $this->img=imagecreatetruecolor($this->width,$this->height); 
  93. //設置背景色 
  94. $bgColor=imagecolorallocate($this->img,rand(200,255), 
  95. rand(200,255),rand(200,255)); 
  96. //填充背景色 
  97. imagefill($this->img,0,0,$bgColor); 
  98. //設置邊框顏色 
  99. $borderColor=imagecolorallocate($this->img,0,0,0); 
  100. //畫一個邊框 
  101. imagerectangle($this->img,0,0,$this->width-1, 
  102. $this->height-1,$borderColor); 
  103.  
  104. //輸出圖像 
  105. private function printImg(){ 
  106. if(imagetypes() & IMG_PNG){ 
  107. //針對png 
  108. header("Content-Type:image/png"); 
  109. imagepng($this->img); 
  110. }else if(imagetypes() & IMG_JPG){ 
  111. //針對jpg 
  112. header("Content-Type:image/jpeg"); 
  113. imagejpeg($this->img,null,100); 
  114. }else if(imagetypes() & IMG_GIF){ 
  115. //針對Gif 
  116. header("Content-Type:image/gif"); 
  117. imagegif($this->img); 
  118. }else if(imagetypes() & IMG_WBMP){ 
  119. // 針對 WBMP 
  120. header(′Content-Type: image/vnd.wap.wbmp′); 
  121. imagewbmp($this->img); 
  122. }else
  123. die(′No image support in this PHP server′); 
  124.  
  125. //創建驗證碼 
  126. private function createCode(){ 
  127. //默認字符串 
  128. $codes="123456789abcdefghijkmnpqrstuvwxyABCDEFGHIJKLMNOPQRSTUVWXY"
  129. //生成驗證碼 
  130. $code=""
  131. for($i=0;$i<$this->num;$i++){ 
  132. $code.=$codes{rand(0,strlen($codes)-1)}; 
  133. //Vevb.com 
  134. return $code
  135.  
  136. //析構函數用于銷毀圖像資源 
  137. function __destruct(){ 
  138. imagedestroy($this->img); 

這里我使用的畫字體的函數是imagettftext()、因為這個函數可以自定義字體樣式、從代碼中也能看出來

傳入的參數有個字體文件屬性、如果不喜歡用這個函數可以使用imagestring()函數也行

只不過個人覺得這個函數的默認字體大小、也不好看、還是自定義字體看著舒服點

調用驗證碼類image_002.php代碼如下:

  1. //開啟Sessionsession_start();//引入驗證碼類include("vcode.class.php");//創建驗證碼類$vcode=new Vcode();//將獲取的驗證碼存入到session中$_SESSION[′code′]=$vcode->getCode();//$vcode->set("pointNum",10);//自定義干擾點個數//$vcode->set("lineNum",10);//自定義干擾線個數//$vcode->set("fontFile","wawa.ttf");//自定義字體文件//輸出圖像$vcode->outImg(); 

HTML代碼如下:

  1. <img src="image_002.php" onclick="this.src=′image_002.php?Math.random()′"/> 

到這里整個功能就做完了、希望對一些哥們有用、同時也當自己做個筆記

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线看日韩欧美| 久久国产精品首页| 久久黄色av网站| 欧美视频在线免费看| 国产精品福利久久久| 狠狠做深爱婷婷久久综合一区| 日韩在线视频免费观看高清中文| 成人看片人aa| 精品中文字幕在线| 亚洲国产中文字幕在线观看| 久久久免费观看| 91精品久久久久久综合乱菊| 亚洲二区中文字幕| 欧美午夜片在线免费观看| 成人黄色在线播放| 日韩av免费看网站| 久久久成人av| 亚洲人成电影网站色| 欧美又大又硬又粗bbbbb| 亚洲xxxx妇黄裸体| 欧美专区国产专区| 黑人巨大精品欧美一区二区| 亚洲精品一区二区在线| 国产亚洲精品美女| 亚洲欧美精品在线| 91社影院在线观看| 日韩av日韩在线观看| 国产亚洲免费的视频看| 欧美乱大交做爰xxxⅹ性3| 97成人超碰免| 国产精品美女久久| 欧美成人精品一区二区三区| 亚洲黄一区二区| 国产精品极品美女在线观看免费| 国产精品美女久久久久av超清| 国产精品天天狠天天看| 国产97人人超碰caoprom| 不卡毛片在线看| 亚洲人成毛片在线播放| 欧美精品videofree1080p| 亚洲老头同性xxxxx| 日韩精品在线播放| 亚洲va久久久噜噜噜| 中文字幕日韩精品在线观看| 最新国产成人av网站网址麻豆| 永久555www成人免费| 亚洲一区二区中文字幕| 国产成人小视频在线观看| 久久影视电视剧免费网站清宫辞电视| 日韩欧美国产中文字幕| 国产精品入口免费视| 日韩一区二区在线视频| 国产精品揄拍500视频| 亚洲欧美日本精品| 亚洲综合自拍一区| 精品国产乱码久久久久久婷婷| 欧美成人免费全部观看天天性色| 日本精品免费观看| 视频直播国产精品| 成人在线观看视频网站| 久久久久久国产精品三级玉女聊斋| 欧美日韩国产在线播放| 欧美日韩电影在线观看| 欧美高清激情视频| 精品视频—区二区三区免费| 国语自产偷拍精品视频偷| 97精品一区二区视频在线观看| 在线观看视频亚洲| 奇门遁甲1982国语版免费观看高清| 在线中文字幕日韩| 国产不卡精品视男人的天堂| 国产精品视频男人的天堂| 影音先锋日韩有码| 色爱av美腿丝袜综合粉嫩av| 亚洲自拍中文字幕| 亚洲2020天天堂在线观看| 色综合久久中文字幕综合网小说| 久久久极品av| 欧美色道久久88综合亚洲精品| 欧美剧在线观看| 久久国产天堂福利天堂| 久久精品美女视频网站| 国产精品视频免费在线| 欧美日韩国产限制| 欧美在线中文字幕| 亚洲精品久久久久| 91久久精品国产91久久| 国产精品爱久久久久久久| 精品国产91乱高清在线观看| 97精品国产97久久久久久春色| 精品久久久久久久久久久久久| yw.139尤物在线精品视频| 日本成人免费在线| 国产精品wwwwww| 日韩精品有码在线观看| 在线观看不卡av| 久久中国妇女中文字幕| 欧美激情亚洲激情| 亚洲性猛交xxxxwww| 亚洲美女又黄又爽在线观看| 国产精品免费电影| 国产在线视频2019最新视频| 国产精品极品美女在线观看免费| 日本国产高清不卡| 亚洲人成在线播放| 亚洲欧洲免费视频| 日韩欧美成人精品| 色偷偷av一区二区三区| 91中文字幕在线| 青青草成人在线| 91精品久久久久久久久久| 国产精品国产福利国产秒拍| 国产精品视频精品视频| 91夜夜未满十八勿入爽爽影院| 性欧美在线看片a免费观看| 中文字幕不卡av| 国产精品久久久久久久久男| 日韩专区在线观看| 国产精品美女免费看| 国产精品久久精品| 国产精品69av| 亚洲欧美变态国产另类| 91久热免费在线视频| 久久人人爽人人| 亚洲精品久久久久国产| 亚洲网在线观看| 亚洲欧洲一区二区三区久久| 青青在线视频一区二区三区| 日韩精品丝袜在线| 亚洲第一精品久久忘忧草社区| 啪一啪鲁一鲁2019在线视频| 欧美性资源免费| 国产精品日韩欧美大师| 国产精品久久久久久久久借妻| 国产精品va在线播放| 色妞欧美日韩在线| 亚洲精品中文字| 精品国产区一区二区三区在线观看| 欧美日韩国产中文精品字幕自在自线| 国产午夜精品一区二区三区| 欧美激情一区二区三区成人| 国产精品99久久久久久久久久久久| 国产成人精品在线| 亚洲人成电影在线播放| 亚洲第一精品自拍| 国产视频亚洲视频| 欧美日韩ab片| 97久久国产精品| 亚洲人成亚洲人成在线观看| 国产性猛交xxxx免费看久久| 久久亚洲国产精品成人av秋霞| 国产精品成人一区二区三区吃奶| 国产精品视频精品视频| 久久亚洲国产精品成人av秋霞| 成人黄色中文字幕| 91av在线免费观看| 中文欧美日本在线资源| 亚洲xxxx视频| 欧美午夜xxx| 国产精品丝袜视频| 国产精品自拍网| 国产成人高清激情视频在线观看| 亚洲第一在线视频| 日韩免费观看视频|